ID: 14616 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Open +Status: Closed Bug Type: Compile Failure Operating System: Linux PHP Version: 4.1.0 New Comment:
This bug has been fixed in CVS. Previous Comments: ------------------------------------------------------------------------ [2001-12-20 05:26:27] [EMAIL PROTECTED] This bug exists when PHP is linked with external static Libtool library and PHP itself is shared. Compile external support library as static. YAZ in this example: cd yaz-1.8.3 ./configure --prefix=/usr make make install cd ../php-4.1.0: ./configure --with-apxs=... --with-yaz and you'd get an output like this: .. /bin/sh ../libtool --silent --mode=link gcc -g -O2 -prefer-pic -o libZend.la -ldl -lyaz -lcrypt -lresolv -lm -ldl -lnsl -lresolv -lcrypt zend_language_parser.lo zend_language_scanner.lo zend_ini_parser.lo zend_ini_scanner.lo zend_alloc.lo zend_compile.lo zend_c onstants.lo zend_dynamic_array.lo zend_execute.lo zend_execute_API.lo zend_highlight.lo zend_llist.lo zend_opcode.lo zend_operators.l o zend_ptr_stack.lo zend_stack.lo zend_variables.lo zend.lo zend_API.lo zend_extensions.lo zend_hash.lo zend_list.lo zend_indent.lo z end_builtin_functions.lo zend_sprintf.lo zend_ini.lo make[1]: Leaving directory `/home/adam/proj/php-4.1.0/Zend' ... /bin/sh /home/adam/proj/php-4.1.0/libtool --silent --mode=link gcc -I. -I/home/adam/proj/php-4.1.0/ -I/home/adam/proj/php-4.1.0/main -I/home/adam/proj/php-4.1.0 -I/home/adam/proj/apache/include -I/home/adam/proj/php-4.1.0/Zend -I/home/adam/proj/php-4.1.0/ext/mysql/ libmysql -I/home/adam/proj/php-4.1.0/ext/xml/expat -DLINUX=22 -DUSE_HSREGEX -DUSE_EXPAT -I/home/adam/proj/php-4.1.0/TSRM -g -O2 -pre fer-pic -o libphp4.la -rpath /home/adam/proj/php-4.1.0/libs -avoid-version stub.lo Zend/libZend.la sapi/apache/libsapi.la main/l ibmain.la regex/libregex.la ext/mysql/libmysql.la ext/pcre/libpcre.la ext/posix/libposix.la ext/session/libsession.la ext/standard/li bstandard.la ext/xml/libxml.la ext/yaz/libyaz.la TSRM/libtsrm.la -ldl -lyaz -lcrypt -lresolv -lm -ldl -lnsl -lresolv -lcrypt /usr/lib/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/yaz/odr/odr_bool.c: first defined here /usr/lib/libyaz.a(ber_bool.o): In function `ber_boolean': [many more multiple symbols] The log indicates that all YAZ symbols are included twice. Apparenly the Zend link step includes YAZ verbatim even though no symbols should be needed to built that. Fixes: 1) removing /usr/lib/libyaz.la makes it work. Now the Zend link step doesn't include YAZ and it works. 2) removing the linkage of yaz from the Zend link step obviously makes it work too (and fixes the problem for all libraries). 3) build shared YAZ library is a fix too. (./configure --enabled-shared for YAZ). The problem doesn't occur with PHP 4.0.6. It is a problem with latest CVS (16 Dec 2001). This problem persists for other libraries than YAZ. Andrew Sitnikov reports he had trouble with linking of '-lmm -lmhash' (had to remove them from Zend/Makefile). If this is a libtool bug and there's no fix for that, my suggestion would be that Zend doesn't link with YAZ or other extension libraries. That is the value of libZend_la_LDFLAGS in Zend/Makefile.am should not include @EXTRA_LIBS@. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=14616&edit=1 -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php