Linking PHP with external Libtool archive.

From: Date: Tue, 06 Nov 2001 20:22:03 +0000
Subject: Linking PHP with external Libtool archive.
Groups: php.dev 
Request: Send a blank email to php-dev+get-69720@lists.php.net to get a copy of this message
Hi,

I'm attempting to link PHP with a Libtool generated library (YAZ)
for extension PHP/YAZ.

If I link with a STATIC YAZ libtool archive from PHP4 it
doesn't work for me. That is latest CVS. I modified config.m4 
and tried four combinations of library specs by modifying file
config.m4 - (PHP_EVAL_LIBLINE) for ext/yaz:

1.  <path>/lib/libyaz.la
2.  <path>/lib/.libs/libyaz.a
3.  -L<path>/lib -lyaz
4.  -L<path>/lib/.libs -lyaz

Nothing works. However, if I install YAZ (make install) it
works. What makes Libtool so confused? I've made other
libtool apps on top of YAZ myself using first form above
for linking.

Case 1. and 2. compiles OK. However the YAZ library
is not really linked in. YAZ symbols are undefined
and Apache fails to load PHP itself.

Case 3 results in multiple symbols. Specifically
all symbols that YAZ define. Errors go like this:

/home/adam/proj/yaz/lib/.libs/libyaz.a(odr_bool.o): In function `odr_bool':
/home/adam/proj/yaz/odr/odr_bool.c(.text+0x0): multiple definition of `odr_bool'
Zend/.libs/libZend.al(odr_bool.o)(.text+0x0):/home/adam/proj/tmp/yaz-1.7/odr/odr_bool.c: first
defined here

Case 4 results in linking error. Trailer goes like this:

libpcre.la ext/posix/libposix.la ext/session/libsession.la ext/standard/libstandard.la
ext/xml/libxml.la ext/yaz/libyaz.la TSRM/libtsrm.la -ldl -lyaz -lcrypt -lresolv -lm -ldl -lnsl
-lresolv -lcrypt
gcc: /home/adam/proj/yaz/lib/.libs/.libs/libyaz.a: No such file or directory
gcc: /home/adam/proj/yaz/lib/.libs/.libs/libyaz.a: No such file or directory
make[1]: *** [libphp4.la] Error 1

Any suggestions appreciated.

I can provide more info if needed.

-- Adam


Thread (2 messages)

« previous php.dev (#69720) next »