Re: Problem with multiple libxml - SOLVED

From: Date: Thu, 19 Aug 2010 15:32:01 +0000
Subject: Re: Problem with multiple libxml - SOLVED
References: 1 2  Groups: php.install 
Request: Send a blank email to php-install+get-19964@lists.php.net to get a copy of this message
[~ksvee] [luc] This mail to share the solution to my problem (see further down).
Hello, I'm trying to compile PHP 5.3.3 on a linux system. I need to compile with libxml and libxslt support. The libraries I want to use are located under /usr/local/libxml2 To achieve my goal I run configure with : ./configure --prefix=/usr/local/apache3 --with-apxs2=/usr/local/apache3/bin/apxs --with-curl --with-mysql=/usr --with-pdo-mysql=/usr --with-libxml-dir=/usr/local/libxml2 --with-xsl=/usr/local/libxml2 --enable-mbstring --with-mcrypt After that, I make, and make install, and apache runs fine with php. MY PROBLEM : ------------ I already have older versions of libxml and libxslt located under /usr/local When looking at the results of phpinfo(), I can see that those libraries have been linked to, instead of the newer ones located in /usr/local/libxml2. The problem seems to arise somewhere within libtool which is called by the Makefile, and generates a linker invocation which explicitly references the old libraries with erroneous full path names (libexslt.so, libxslt.so and libxml2.so) : gcc -shared ext/date/.libs/php_date.o ... lots of .o files ... -Wl,--rpath -Wl,/usr/local/lib -Wl,--rpath -Wl,/usr/local/lib -Wl,--rpath -Wl,/usr/lib/mysql -Wl,--rpath -Wl,/usr/local/libxml2/lib -L/usr/local/lib -L/usr/lib/mysql -L/usr/local/libxml2/lib -lcrypt /usr/local/lib/libexslt.so ... lots of other sometimes redundant libraries ... /usr/local/lib/libxslt.so /usr/local/lib/libxml2.so ... -Wl,-soname -Wl,libphp5.so -o .libs/libphp5.so Is there any wizard out there to give me a hint how I could fix that ?
Any tries to get proper options or env settings to ./configure failed. I finally hacked the generated Makefile to carefully prepend every reference to /usr/local by /usr/local/libxml2 within any include path and any loader path. Here the modified lines : CPPFLAGS = -I/usr/local/libxml2/include EXTRA_LDFLAGS = -avoid-version -module -Wl,-R/usr/local/libxml2/lib:/usr/local/lib -L/usr/local/libxml2/lib -L/usr/local/lib -L/usr/lib/mysql EXTRA_LDFLAGS_PROGRAM = -Wl,-R/usr/local/libxml2/lib:/usr/local/lib -L/usr/local/libxml2/lib -L/usr/local/lib -L/usr/lib/mysql INCLUDES = [...] -I/usr/local/libxml2/include -I/usr/local/libxml2/include/libxml2 -I/usr/local/include -I$(top_builddir)/TSRM -I$(top_builddir)/Zend NATIVE_RPATHS = -Wl,-rpath,/usr/local/libxml2/lib -Wl,-rpath,/usr/local/lib -Wl,-rpath,/usr/lib/mysql PHP_LDFLAGS = -Wl,-R/usr/local/libxml2/lib:/usr/local/lib -L/usr/local/libxml2/lib -L/usr/local/lib -L/usr/lib/mysql PHP_RPATHS = -R /usr/local/libxml2/lib -R /usr/local/lib -R /usr/lib/mysql May thanks to Ken and Luc for the help. Dan.

« previous php.install (#19964) next »