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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.