PHP 4.0 Bug #9856: Missing run path in shared object library
| From: | bill dot roberts at anu dot edu dot au | Date: | Tue, 20 Mar 2001 05:29:19 +0000 |
| Subject: | PHP 4.0 Bug #9856: Missing run path in shared object library | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-49450@lists.php.net to get a copy of this message | ||
From: bill.roberts@anu.edu.au
Operating system: Solaris 8
PHP version: 4.0.4pl1
PHP Bug Type: *Install and Config
Bug description: Missing run path in shared object library
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
--
Edit Bug report at: http://bugs.php.net/?id=9856&edit=1