php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #9856 Missing run path in shared object library
Submitted: 2001-03-20 00:29 UTC Modified: 2001-06-04 04:38 UTC
From: bill dot roberts at anu dot edu dot au Assigned:
Status: Closed Package: Installation problem
PHP Version: 4.0.4pl1 OS: Solaris 8
Private report: No CVE-ID: None
 [2001-03-20 00:29 UTC] bill dot roberts at anu dot edu dot au
The libtool call at the end of the build lists a lot of -R directives to the build to put the run path in libphp4.so, but the run path is not there.  I ran libtool without the --silent to see what it was doing and got this:

mizar</data/mizar/bill/php-4.0.4pl1>/bin/sh /data/mizar1/bill/php-4.0.4pl1/libtool 
 --mode=link cc  -I. -I/data/mizar1/bill/php-4.0.4pl1/ -I/data/mizar1/bill/php-4.0
.4pl1/main -I/data/mizar1/bill/php-4.0.4pl1 -I/usr/local/apache_1.3.19/include -I/
data/mizar1/bill/php-4.0.4pl1/Zend -I/usr/local/ssl/include -I/usr/local/ldap/incl
ude -I/usr/local/mysql/include/mysql -I/data/mizar1/bill/php-4.0.4pl1/ext/xml/expa
t/xmltok -I/data/mizar1/bill/php-4.0.4pl1/ext/xml/expat/xmlparse -I/usr/local/incl
ude -I/data/mizar1/bill/php-4.0.4pl1/TSRM  -D_POSIX_PTHREAD_SEMANTICS -DSOLARIS2=2
80 -DMOD_SSL=208101 -DEAPI -DUSE_EXPAT -DSHARED_CORE -DHAVE_NSLDAP -DXML_BYTE_ORDE
R=21 -xO3 -I/usr/local/ssl -DHAVE_NSLDAP -I/usr/include   -o libphp4.la -rpath /da
ta/mizar1/bill/php-4.0.4pl1/libs -avoid-version -L/usr/ucblib -L/usr/local/ssl/lib
 -L/usr/local/ldap/lib -L/usr/local/mysql/lib/mysql -L/usr/local/lib  -R /usr/ucbl
ib -R /usr/local/ssl/lib -R /usr/local/ldap/lib -R /usr/local/mysql/lib/mysql -R /
usr/local/lib stub.lo  Zend/libZend.la  sapi/apache/libsapi.la  main/libmain.la  r
egex/libregex.la  ext/ldap/libldap.la ext/mysql/libmysql.la ext/openssl/libopenssl
.la ext/pcre/libpcre.la ext/posix/libposix.la ext/session/libsession.la ext/standa
rd/libstandard.la ext/xml/libxml.la ext/zlib/libzlib.la  TSRM/libtsrm.la -lpam -ld
l -lz -lmysqlclient -lldap -llber -lcrypto -lssl -lresolv -lresolv -lm -ldl -lcryp
t -lnsl -lsocket -lsocket


rm -fr .libs/libphp4.la .libs/libphp4.* .libs/libphp4.*


/usr/ccs/bin/ld -G -h libphp4.so -o .libs/libphp4.so  stub.lo -z allextract Zend/.libs/libZend.al sapi/apache/.libs/libsapi.al main/.libs/libmain.al regex/.libs/libregex.al ext/ldap/.libs/libldap.al ext/mysql/.libs/libmysql.al ext/openssl/.libs/libopenssl.al ext/pcre/.libs/libpcre.al ext/posix/.libs/libposix.al ext/session/.libs/libsession.al ext/standard/.libs/libstandard.al ext/xml/.libs/libxml.al ext/zlib/.libs/libzlib.al TSRM/.libs/libtsrm.al -z defaultextract  -L/usr/ucblib -L/usr/local/ssl/lib -L/usr/local/ldap/lib -L/usr/local/mysql/lib/mysql -L/usr/local/lib -lpam -ldl -lz -lmysqlclient -lldap -llber -lcrypto -lssl -lresolv -lresolv -lm -ldl -lcrypt -lnsl -lsocket -lsocket -lpam -ldl -lz -lmysqlclient -lldap -llber -lcrypto -lssl -lresolv -lresolv -lm -ldl -lcrypt -lnsl -lsocket -lsocket -lc 
creating libphp4.la
(cd .libs && rm -f libphp4.la && ln -s ../libphp4.la libphp4.la)

Note there are no -R directives in the generated ld command.  This leads to:

mizar</data/mizar/bill/php-4.0.4pl1>ldd -s .libs/libphp4.so

   find library=.libs/libphp4.so; required by /usr/lib/lddstub

   find library=libpam.so.1; required by .libs/libphp4.so
    search path=/usr/lib  (default)
    trying path=/usr/lib/libpam.so.1
        libpam.so.1 =>   /usr/lib/libpam.so.1

   find library=libdl.so.1; required by .libs/libphp4.so
    search path=/usr/lib  (default)
    trying path=/usr/lib/libdl.so.1
        libdl.so.1 =>    /usr/lib/libdl.so.1

   find library=libz.so; required by .libs/libphp4.so
    search path=/usr/lib  (default)
    trying path=/usr/lib/libz.so
        libz.so =>       /usr/lib/libz.so

   find library=libmysqlclient.so.6; required by .libs/libphp4.so
    search path=/usr/lib  (default)
    trying path=/usr/lib/libmysqlclient.so.6
        libmysqlclient.so.6 =>   (file not found)

... other stuff deleted...

i.e. libmysqlclient.so.6 is not found

Note:  I had no LD_LIBRARY_PATH set 

mysql is installed as /usr/local/mysql

I eventually fixed this by cutting and pasting the generated ld command and adding the necessary -R directives

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-06-04 04:38 UTC] sniper@php.net
Not a PHP bug but libtool 'feature'. 
Report it to the libtool developers.

--Jani

 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Dec 10 01:01:27 2024 UTC