Re: Problem with multiple libxml - SOLVED
[email protected] ("dan")
| Newsgroups | php.install |
|---|---|
| Message-ID | <[email protected]> |
[~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.