| Bug #29860 | Cannot compile with mysql and mysqli extensions | ||||
|---|---|---|---|---|---|
| Submitted: | 27 Aug 2004 8:08am UTC | Modified: | 14 Oct 2004 1:00am UTC | ||
| From: | rjanson at msn dot com | Assigned to: | |||
| Status: | No Feedback | Category: | Compile Failure | ||
| Version: | 5.0.1 | OS: | Redhat 9 | ||
| Votes: | 35 | Avg. Score: | 4.5 ± 0.8 | Reproduced: | 31 of 32 (96.9%) |
| Same Version: | 12 (38.7%) | Same OS: | 7 (22.6%) | ||
[27 Aug 2004 8:08am UTC] rjanson at msn dot com
[4 Sep 2004 7:28pm UTC] pbriggs at clinitech dot net
Same thing is happening to me using RedHat Enterprise 3. Unless I can get both mysql and mysqli to live with each other, I can't port my apps over to mysqli.
[7 Sep 2004 7:52am UTC] georg@php.net
When using the mysqli extension together with the mysql extension you have to use the same libraries and include files. mysqli extension requires the location of mysql_config file, mysql extension requires the path of your mysql installation. If you installed MySQL 4.1 for example with prefix /usr/local/mysql-4.1 your configure settings should be --with-mysql=/usr/local/mysql-4.1 --with-mysqli=/usr/local/mysql-4.1/bin/mysql_config
[8 Sep 2004 8:18am UTC] rjanson at msn dot com
I should have mentioned before that I have tried the configuration you suggest as well. In between each failed 'make' I have done a 'make clean' to be sure I am not using any leftover configuration options. No matter what path I use for mysql and mysqli, if the configuration passes, the make fails. I've seen this issue mentioned in various places, but never a resolution.
[13 Sep 2004 7:38pm UTC] nathansquires at pacbell dot net
I had the same linking problem with php 5.0.1 and mysql 4.1.4a-gamma. I was able to compile with mysql and mysqli by rebuilding mysql with shared libraries (i.e. don't use --without-shared or --*flags=--all-static). If you only have static mysql libraries, trying to build php with mysql and mysqli will cause this error.
[13 Sep 2004 8:44pm UTC] rjanson at msn dot com
I installed mysql via the RPMs provided on the MySQL site. I unsinstalled the MySQL-shared-compat-4.1.4-0 rpm and tried building agin with the same result. These are the RPMs I have installed currently: MySQL-devel-4.1.4-0 MySQL-client-4.1.4-0 MySQL-Max-4.1.4-0 MySQL-bench-4.1.3-1 MySQL-server-4.1.4-0 MySQL-shared-4.1.4-0 Is it possible something with the RPMs is causing the failure?
[21 Sep 2004 1:12am UTC] rjanson at msn dot com
I tried backing up and completely uninstalling, then reinstalling Mysql-4.1.4-0 from RPM, and still get the same result. Others out there are having this issue as well. Is there nothing to be done? --Rich
[24 Sep 2004 7:59pm UTC] rjanson at msn dot com
I've tried the same steps with php-5.02 and still the same results.
[5 Oct 2004 1:50pm UTC] php at kilimajer dot net
This is caused by -lmysqlclient being supplied twice to the linker (at least it was my case).
[5 Oct 2004 10:52pm UTC] php at kilimajer dot net
Workaround is to execute the last failing command with one -lmysqlclient removed, then again make. This should be fixed in ext/mysqli/config.m4.
[5 Oct 2004 11:33pm UTC] rjanson at msn dot com
OK, finally an answer! I checked Makefile and found the following line: EXTRA_LIBS = -lcrypt -lcrypt -lmysqlclient -lpng -lz -lz -lresolv -lm -ldl -lnsl -lxml2 - lz -lm -lxml2 -lz -lm -lmysqlclient -lcrypt -lnsl -lm -lz -lnss_files -lnss_dns -lresolv -lnss_files -lnss_dns -lresolv -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lcrypt By removing one of the -lmysqlclient entries on this line I was able to successfully make and make install with both mysql and mysqli. As confirmed by phpInfo(). I'm not sure why the other libs have multiple entries and don't cause make to crash.
[6 Oct 2004 8:52am UTC] derick@php.net
That doesn't make sense unless you only have a static version of the libmysqlclient... in which case I still think that the linker handles that correctly. Can you please try to use a shared library version of libmysqlclient though?
[6 Oct 2004 1:28pm UTC] php at kilimajer dot net
The errror occurs with these rpms installed: MySQL-server-4.1.5-0 MySQL-client-4.1.5-0 MySQL-bench-4.1.5-0 MySQL-shared-4.1.5-0 MySQL-embedded-4.1.5-0 MySQL-devel-4.1.5-0 They are downloaded from mysql.com
[7 Oct 2004 12:48pm UTC] stormchaser1 at gmail dot com
Saame problem... cvs HEAD (php 5.1) from yesterday...
[7 Oct 2004 12:52pm UTC] stormchaser1 at gmail dot com
forgot to mention it's the MySQL 5.0.1-alpha installed from rpms from mysql.com
[14 Oct 2004 1:00am UTC] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
[28 Oct 2004 9:49pm UTC] kpederson at mail dot ewu dot edu
I can confirm a few things. I have both the static and the shared libraries installed as they both come in the standard mysql-devel rpm: /usr/lib/libmysqlclient.so /usr/lib/libmysqlclient.so.14 /usr/lib/mysql /usr/lib/mysql/libmysqlclient.a /usr/lib/mysql/libmysqlclient_r.la /usr/lib/mysql/libmysqld.a /usr/lib/mysql/libmysqlclient_r.a /usr/lib/mysql/mysqld.sym /usr/lib/mysql/libmysqlclient.la /usr/lib/libmysqlclient.so.14.0.0 /usr/lib/libmysqlclient_r.so /usr/lib/libmysqlclient_r.so.14 /usr/lib/libmysqlclient_r.so.14.0.0 If the static libraries are found, then the make dies with linking problems. I temporarily did a 'rename .a .a_old *.a' and 'rename .la .la_old *.la' in my /usr/lib/mysql directory, and then was able to make everything successfully. The output of ./configure ... | grep -i mysql gives: checking for MySQL support... yes checking for specified location of the MySQL UNIX socket... /var/run/mysql/mysql.sock checking for MySQL UNIX socket location... /var/run/mysql/mysql.sock checking for mysql_close in -lmysqlclient... (cached) yes checking for MySQLi support... yes checking whether to enable embedded MySQLi support... no checking for mysql_set_server_option in -lmysqlclient... (cached) yes checking for mysql_stmt_field_count in -lmysqlclient... (cached) yes BTW, I'm running Redhat Enterprise AS using PHP-5.0.2 and MySQL-4.1.7 (stable).
[19 Feb 2005 7:32pm UTC] chris at leftbrained dot org
I know this hasn't been looked at in some time, but I've spent that last few days working out this exact problem. Apache 2.0.53 - Built by me into /usr/local/apache MySQL 4.1.9 - Used the RPM download of of mysql.com >MySQL-client-4.1.9-0 >MySQL-shared-compat-4.1.9-0 >MySQL-server-4.1.9-0 >MySQL-bench-4.1.9-0 >MySQL-devel-4.1.9-0 PHP 5.0.3 - ./configure --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr --with-mysqli=/usr/bin/mysql_config I'm on some form of RedHat Enterprise, I'm not quite sure how I would check which one. I was coming up witht he same exact errors, and the *only* way I was able to make it work was this: cd /usr/lib/mysql rename .a .a_old *.a rename .la .la_old *.la Then run configure/make/make install Then rename these files back. cd /usr/lib/mysql rename .a_old .a *.a_old rename .la_old .la *.la_old I'm not sure what precisely these files are, and this was a last resort attempt for me, but it worked. Chris
[9 May 2005 6:48pm UTC] jorge dot tiao dot pereira at gmail dot com
so do i. i donīt connect mysql database to the pega in php. how do it?
[9 Jun 2005 7:12pm UTC] michael at mompopmedia dot com
For what it is worth, I can confirm the same issue building php5.0.4 on RHE 3. MySQL packages as follows: MySQL-client-4.1.11-0 MySQL-shared-compat-4.1.11-0 MySQL-embedded-4.1.11-0 MySQL-bench-4.1.11-0 MySQL-shared-4.1.11-0 perl-DBD-MySQL-2.1021-3 MySQL-devel-4.1.11-0 MySQL-server-4.1.11-0 I'm also running Apache/1.3.33 chris at leftbrained dot org suggestion did the trick.
[27 Sep 2005 11:44pm UTC] keith at green-light dot ca
Same issue on Fedora Core 2, mysql 4.1.12, and php 5.0.4. Removed the duplicated -lmysqlclient and was able to compile.
[30 Oct 2005 2:45pm UTC] i-marcin at tlen dot pl
I have the same problem with php-5.0.5 and MySQL 4.1 rpm`s downloaded from mysql.com. On another machine with the same OS and the same PHP version, but with MySQL 4.1 compiled from source, the problem does not exist. So I suggest to compile MySQL from source if any other solutions fail.
[3 Dec 2005 2:29am UTC] brian at cpanel dot net
I've looked at this a while and maybe my comments can help. I was able
to reproduce this problem most machines with mysql 4.1 and using only
--with-mysql and --with-mysqli and --with-apxs. This particular machine
is a normal centos machine.
As mentioned earlier, -lmysqlclient is listed twice in EXTRA_LIBS in the
Makefile. This normally doesnt make a difference. However, in this
case, removing the 2nd -lmysqlclient causes it to build properly.
This is the libtool command that fails:
/bin/sh /home/cpapachebuild/buildapache/php-5.0.5/libtool --silent
--preserve-dup-deps --mode=link gcc -g -O2 -prefer-non-pic -rpath
/home/cpapachebuild/buildapache/php-5.0.5/libs -avoid-version -module
-L/usr/lib/mysql -R /usr/lib/mysql ext/libxml/libxml.lo
ext/ctype/ctype.lo ext/dom/php_dom.lo ext/dom/attr.lo
ext/dom/document.lo ext/dom/domerrorhandler.lo ext/dom/domstringlist.lo
ext/dom/domexception.lo ext/dom/namelist.lo
ext/dom/processinginstruction.lo ext/dom/cdatasection.lo
ext/dom/documentfragment.lo ext/dom/domimplementation.lo
ext/dom/element.lo ext/dom/node.lo ext/dom/string_extend.lo
ext/dom/characterdata.lo ext/dom/documenttype.lo
ext/dom/domimplementationlist.lo ext/dom/entity.lo ext/dom/nodelist.lo
ext/dom/text.lo ext/dom/comment.lo ext/dom/domconfiguration.lo
ext/dom/domimplementationsource.lo ext/dom/entityreference.lo
ext/dom/notation.lo ext/dom/xpath.lo ext/dom/dom_iterators.lo
ext/dom/typeinfo.lo ext/dom/domerror.lo ext/dom/domlocator.lo
ext/dom/namednodemap.lo ext/dom/userdatahandler.lo ext/iconv/iconv.lo
ext/mysql/php_mysql.lo ext/mysqli/mysqli.lo ext/mysqli/mysqli_api.lo
ext/mysqli/mysqli_prop.lo ext/mysqli/mysqli_nonapi.lo
ext/mysqli/mysqli_fe.lo ext/mysqli/mysqli_report.lo
ext/mysqli/mysqli_repl.lo ext/pcre/pcrelib/pcre_chartables.lo
ext/pcre/pcrelib/pcre_compile.lo ext/pcre/pcrelib/pcre_config.lo
ext/pcre/pcrelib/pcre_dfa_exec.lo ext/pcre/pcrelib/pcre_exec.lo
ext/pcre/pcrelib/pcre_fullinfo.lo ext/pcre/pcrelib/pcre_get.lo
ext/pcre/pcrelib/pcre_globals.lo ext/pcre/pcrelib/pcre_info.lo
ext/pcre/pcrelib/pcre_maketables.lo ext/pcre/pcrelib/pcre_ord2utf8.lo
ext/pcre/pcrelib/pcre_printint.lo ext/pcre/pcrelib/pcre_refcount.lo
ext/pcre/pcrelib/pcre_study.lo ext/pcre/pcrelib/pcre_tables.lo
ext/pcre/pcrelib/pcre_try_flipped.lo
ext/pcre/pcrelib/pcre_ucp_findchar.lo
ext/pcre/pcrelib/pcre_valid_utf8.lo ext/pcre/pcrelib/pcre_version.lo
ext/pcre/pcrelib/pcre_xclass.lo ext/pcre/php_pcre.lo ext/posix/posix.lo
ext/session/session.lo ext/session/mod_files.lo ext/session/mod_mm.lo
ext/session/mod_user.lo ext/simplexml/simplexml.lo ext/spl/php_spl.lo
ext/spl/spl_functions.lo ext/spl/spl_engine.lo ext/spl/spl_iterators.lo
ext/spl/spl_array.lo ext/spl/spl_directory.lo ext/spl/spl_sxe.lo
ext/sqlite/sqlite.lo ext/sqlite/sess_sqlite.lo
ext/sqlite/libsqlite/src/opcodes.lo ext/sqlite/libsqlite/src/parse.lo
ext/sqlite/libsqlite/src/encode.lo ext/sqlite/libsqlite/src/auth.lo
ext/sqlite/libsqlite/src/btree.lo ext/sqlite/libsqlite/src/build.lo
ext/sqlite/libsqlite/src/delete.lo ext/sqlite/libsqlite/src/expr.lo
ext/sqlite/libsqlite/src/func.lo ext/sqlite/libsqlite/src/hash.lo
ext/sqlite/libsqlite/src/insert.lo ext/sqlite/libsqlite/src/main.lo
ext/sqlite/libsqlite/src/os.lo ext/sqlite/libsqlite/src/pager.lo
ext/sqlite/libsqlite/src/printf.lo ext/sqlite/libsqlite/src/random.lo
ext/sqlite/libsqlite/src/select.lo ext/sqlite/libsqlite/src/table.lo
ext/sqlite/libsqlite/src/tokenize.lo ext/sqlite/libsqlite/src/update.lo
ext/sqlite/libsqlite/src/util.lo ext/sqlite/libsqlite/src/vdbe.lo
ext/sqlite/libsqlite/src/attach.lo ext/sqlite/libsqlite/src/btree_rb.lo
ext/sqlite/libsqlite/src/pragma.lo ext/sqlite/libsqlite/src/vacuum.lo
ext/sqlite/libsqlite/src/copy.lo ext/sqlite/libsqlite/src/vdbeaux.lo
ext/sqlite/libsqlite/src/date.lo ext/sqlite/libsqlite/src/where.lo
ext/sqlite/libsqlite/src/trigger.lo regex/regcomp.lo regex/regexec.lo
regex/regerror.lo regex/regfree.lo ext/standard/array.lo
ext/standard/base64.lo ext/standard/basic_functions.lo
ext/standard/browscap.lo ext/standard/crc32.lo ext/standard/crypt.lo
ext/standard/cyr_convert.lo ext/standard/datetime.lo ext/standard/dir.lo
ext/standard/dl.lo ext/standard/dns.lo ext/standard/exec.lo
ext/standard/file.lo ext/standard/filestat.lo
ext/standard/flock_compat.lo ext/standard/formatted_print.lo
ext/standard/fsock.lo ext/standard/head.lo ext/standard/html.lo
ext/standard/image.lo ext/standard/info.lo ext/standard/iptc.lo
ext/standard/lcg.lo ext/standard/link.lo ext/standard/mail.lo
ext/standard/math.lo ext/standard/md5.lo ext/standard/metaphone.lo
ext/standard/microtime.lo ext/standard/pack.lo ext/standard/pageinfo.lo
ext/standard/parsedate.lo ext/standard/quot_print.lo
ext/standard/rand.lo ext/standard/reg.lo ext/standard/soundex.lo
ext/standard/string.lo ext/standard/scanf.lo ext/standard/syslog.lo
ext/standard/type.lo ext/standard/uniqid.lo ext/standard/url.lo
ext/standard/url_scanner.lo ext/standard/var.lo
ext/standard/versioning.lo ext/standard/assert.lo
ext/standard/strnatcmp.lo ext/standard/levenshtein.lo
ext/standard/incomplete_class.lo ext/standard/url_scanner_ex.lo
ext/standard/ftp_fopen_wrapper.lo ext/standard/http_fopen_wrapper.lo
ext/standard/php_fopen_wrapper.lo ext/standard/credits.lo
ext/standard/css.lo ext/standard/var_unserializer.lo
ext/standard/ftok.lo ext/standard/sha1.lo ext/standard/user_filters.lo
ext/standard/uuencode.lo ext/standard/filters.lo
ext/standard/proc_open.lo ext/standard/sunfuncs.lo
ext/standard/streamsfuncs.lo ext/standard/http.lo
ext/tokenizer/tokenizer.lo ext/xml/xml.lo ext/xml/compat.lo TSRM/TSRM.lo
TSRM/tsrm_strtok_r.lo TSRM/tsrm_virtual_cwd.lo main/main.lo
main/snprintf.lo main/spprintf.lo main/php_sprintf.lo main/safe_mode.lo
main/fopen_wrappers.lo main/alloca.lo main/php_scandir.lo
main/php_ini.lo main/SAPI.lo main/rfc1867.lo main/php_content_types.lo
main/strlcpy.lo main/strlcat.lo main/mergesort.lo main/reentrancy.lo
main/php_variables.lo main/php_ticks.lo main/network.lo
main/php_open_temporary_file.lo main/php_logos.lo main/output.lo
main/streams/streams.lo main/streams/cast.lo main/streams/memory.lo
main/streams/filter.lo main/streams/plain_wrapper.lo
main/streams/userspace.lo main/streams/transports.lo
main/streams/xp_socket.lo main/streams/mmap.lo
Zend/zend_language_parser.lo Zend/zend_language_scanner.lo
Zend/zend_ini_parser.lo Zend/zend_ini_scanner.lo Zend/zend_alloc.lo
Zend/zend_compile.lo Zend/zend_constants.lo Zend/zend_dynamic_array.lo
Zend/zend_execute_API.lo Zend/zend_highlight.lo Zend/zend_llist.lo
Zend/zend_opcode.lo Zend/zend_operators.lo Zend/zend_ptr_stack.lo
Zend/zend_stack.lo Zend/zend_variables.lo Zend/zend.lo Zend/zend_API.lo
Zend/zend_extensions.lo Zend/zend_hash.lo Zend/zend_list.lo
Zend/zend_indent.lo Zend/zend_builtin_functions.lo Zend/zend_sprintf.lo
Zend/zend_ini.lo Zend/zend_qsort.lo Zend/zend_multibyte.lo
Zend/zend_ts_hash.lo Zend/zend_stream.lo Zend/zend_iterators.lo
Zend/zend_interfaces.lo Zend/zend_exceptions.lo Zend/zend_strtod.lo
Zend/zend_objects.lo Zend/zend_object_handlers.lo
Zend/zend_objects_API.lo Zend/zend_mm.lo Zend/zend_default_classes.lo
Zend/zend_reflection_api.lo Zend/zend_execute.lo
sapi/apache/sapi_apache.lo sapi/apache/mod_php5.lo
sapi/apache/php_apache.lo main/internal_functions.lo -lcrypt -lcrypt
-lmysqlclient -lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lxml2 -lz -lm
-lmysqlclient -lz -lcrypt -lnsl -lm -lnss_files -lnss_dns -lresolv
-lnss_files -lnss_dns -lresolv -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm
-lcrypt -o libphp5.la
libtool ends up executing the following gcc command:
gcc -shared ext/libxml/libxml.lo ext/ctype/ctype.lo ext/dom/php_dom.lo
ext/dom/attr.lo ext/dom/document.lo ext/dom/domerrorhandler.lo
ext/dom/domstringlist.lo ext/dom/domexception.lo ext/dom/namelist.lo
ext/dom/processinginstruction.lo ext/dom/cdatasection.lo
ext/dom/documentfragment.lo ext/dom/domimplementation.lo
ext/dom/element.lo ext/dom/node.lo ext/dom/string_extend.lo
ext/dom/characterdata.lo ext/dom/documenttype.lo
ext/dom/domimplementationlist.lo ext/dom/entity.lo ext/dom/nodelist.lo
ext/dom/text.lo ext/dom/comment.lo ext/dom/domconfiguration.lo
ext/dom/domimplementationsource.lo ext/dom/entityreference.lo
ext/dom/notation.lo ext/dom/xpath.lo ext/dom/dom_iterators.lo
ext/dom/typeinfo.lo ext/dom/domerror.lo ext/dom/domlocator.lo
ext/dom/namednodemap.lo ext/dom/userdatahandler.lo ext/iconv/iconv.lo
ext/mysql/php_mysql.lo ext/mysqli/mysqli.lo ext/mysqli/mysqli_api.lo
ext/mysqli/mysqli_prop.lo ext/mysqli/mysqli_nonapi.lo
ext/mysqli/mysqli_fe.lo ext/mysqli/mysqli_report.lo
ext/mysqli/mysqli_repl.lo ext/pcre/pcrelib/pcre_chartables.lo
ext/pcre/pcrelib/pcre_compile.lo ext/pcre/pcrelib/pcre_config.lo
ext/pcre/pcrelib/pcre_dfa_exec.lo ext/pcre/pcrelib/pcre_exec.lo
ext/pcre/pcrelib/pcre_fullinfo.lo ext/pcre/pcrelib/pcre_get.lo
ext/pcre/pcrelib/pcre_globals.lo ext/pcre/pcrelib/pcre_info.lo
ext/pcre/pcrelib/pcre_maketables.lo ext/pcre/pcrelib/pcre_ord2utf8.lo
ext/pcre/pcrelib/pcre_printint.lo ext/pcre/pcrelib/pcre_refcount.lo
ext/pcre/pcrelib/pcre_study.lo ext/pcre/pcrelib/pcre_tables.lo
ext/pcre/pcrelib/pcre_try_flipped.lo
ext/pcre/pcrelib/pcre_ucp_findchar.lo
ext/pcre/pcrelib/pcre_valid_utf8.lo ext/pcre/pcrelib/pcre_version.lo
ext/pcre/pcrelib/pcre_xclass.lo ext/pcre/php_pcre.lo ext/posix/posix.lo
ext/session/session.lo ext/session/mod_files.lo ext/session/mod_mm.lo
ext/session/mod_user.lo ext/simplexml/simplexml.lo ext/spl/php_spl.lo
ext/spl/spl_functions.lo ext/spl/spl_engine.lo ext/spl/spl_iterators.lo
ext/spl/spl_array.lo ext/spl/spl_directory.lo ext/spl/spl_sxe.lo
ext/sqlite/sqlite.lo ext/sqlite/sess_sqlite.lo
ext/sqlite/libsqlite/src/opcodes.lo ext/sqlite/libsqlite/src/parse.lo
ext/sqlite/libsqlite/src/encode.lo ext/sqlite/libsqlite/src/auth.lo
ext/sqlite/libsqlite/src/btree.lo ext/sqlite/libsqlite/src/build.lo
ext/sqlite/libsqlite/src/delete.lo ext/sqlite/libsqlite/src/expr.lo
ext/sqlite/libsqlite/src/func.lo ext/sqlite/libsqlite/src/hash.lo
ext/sqlite/libsqlite/src/insert.lo ext/sqlite/libsqlite/src/main.lo
ext/sqlite/libsqlite/src/os.lo ext/sqlite/libsqlite/src/pager.lo
ext/sqlite/libsqlite/src/printf.lo ext/sqlite/libsqlite/src/random.lo
ext/sqlite/libsqlite/src/select.lo ext/sqlite/libsqlite/src/table.lo
ext/sqlite/libsqlite/src/tokenize.lo ext/sqlite/libsqlite/src/update.lo
ext/sqlite/libsqlite/src/util.lo ext/sqlite/libsqlite/src/vdbe.lo
ext/sqlite/libsqlite/src/attach.lo ext/sqlite/libsqlite/src/btree_rb.lo
ext/sqlite/libsqlite/src/pragma.lo ext/sqlite/libsqlite/src/vacuum.lo
ext/sqlite/libsqlite/src/copy.lo ext/sqlite/libsqlite/src/vdbeaux.lo
ext/sqlite/libsqlite/src/date.lo ext/sqlite/libsqlite/src/where.lo
ext/sqlite/libsqlite/src/trigger.lo regex/regcomp.lo regex/regexec.lo
regex/regerror.lo regex/regfree.lo ext/standard/array.lo
ext/standard/base64.lo ext/standard/basic_functions.lo
ext/standard/browscap.lo ext/standard/crc32.lo ext/standard/crypt.lo
ext/standard/cyr_convert.lo ext/standard/datetime.lo ext/standard/dir.lo
ext/standard/dl.lo ext/standard/dns.lo ext/standard/exec.lo
ext/standard/file.lo ext/standard/filestat.lo
ext/standard/flock_compat.lo ext/standard/formatted_print.lo
ext/standard/fsock.lo ext/standard/head.lo ext/standard/html.lo
ext/standard/image.lo ext/standard/info.lo ext/standard/iptc.lo
ext/standard/lcg.lo ext/standard/link.lo ext/standard/mail.lo
ext/standard/math.lo ext/standard/md5.lo ext/standard/metaphone.lo
ext/standard/microtime.lo ext/standard/pack.lo ext/standard/pageinfo.lo
ext/standard/parsedate.lo ext/standard/quot_print.lo
ext/standard/rand.lo ext/standard/reg.lo ext/standard/soundex.lo
ext/standard/string.lo ext/standard/scanf.lo ext/standard/syslog.lo
ext/standard/type.lo ext/standard/uniqid.lo ext/standard/url.lo
ext/standard/url_scanner.lo ext/standard/var.lo
ext/standard/versioning.lo ext/standard/assert.lo
ext/standard/strnatcmp.lo ext/standard/levenshtein.lo
ext/standard/incomplete_class.lo ext/standard/url_scanner_ex.lo
ext/standard/ftp_fopen_wrapper.lo ext/standard/http_fopen_wrapper.lo
ext/standard/php_fopen_wrapper.lo ext/standard/credits.lo
ext/standard/css.lo ext/standard/var_unserializer.lo
ext/standard/ftok.lo ext/standard/sha1.lo ext/standard/user_filters.lo
ext/standard/uuencode.lo ext/standard/filters.lo
ext/standard/proc_open.lo ext/standard/sunfuncs.lo
ext/standard/streamsfuncs.lo ext/standard/http.lo
ext/tokenizer/tokenizer.lo ext/xml/xml.lo ext/xml/compat.lo TSRM/TSRM.lo
TSRM/tsrm_strtok_r.lo TSRM/tsrm_virtual_cwd.lo main/main.lo
main/snprintf.lo main/spprintf.lo main/php_sprintf.lo main/safe_mode.lo
main/fopen_wrappers.lo main/alloca.lo main/php_scandir.lo
main/php_ini.lo main/SAPI.lo main/rfc1867.lo main/php_content_types.lo
main/strlcpy.lo main/strlcat.lo main/mergesort.lo main/reentrancy.lo
main/php_variables.lo main/php_ticks.lo main/network.lo
main/php_open_temporary_file.lo main/php_logos.lo main/output.lo
main/streams/streams.lo main/streams/cast.lo main/streams/memory.lo
main/streams/filter.lo main/streams/plain_wrapper.lo
main/streams/userspace.lo main/streams/transports.lo
main/streams/xp_socket.lo main/streams/mmap.lo
Zend/zend_language_parser.lo Zend/zend_language_scanner.lo
Zend/zend_ini_parser.lo Zend/zend_ini_scanner.lo Zend/zend_alloc.lo
Zend/zend_compile.lo Zend/zend_constants.lo Zend/zend_dynamic_array.lo
Zend/zend_execute_API.lo Zend/zend_highlight.lo Zend/zend_llist.lo
Zend/zend_opcode.lo Zend/zend_operators.lo Zend/zend_ptr_stack.lo
Zend/zend_stack.lo Zend/zend_variables.lo Zend/zend.lo Zend/zend_API.lo
Zend/zend_extensions.lo Zend/zend_hash.lo Zend/zend_list.lo
Zend/zend_indent.lo Zend/zend_builtin_functions.lo Zend/zend_sprintf.lo
Zend/zend_ini.lo Zend/zend_qsort.lo Zend/zend_multibyte.lo
Zend/zend_ts_hash.lo Zend/zend_stream.lo Zend/zend_iterators.lo
Zend/zend_interfaces.lo Zend/zend_exceptions.lo Zend/zend_strtod.lo
Zend/zend_objects.lo Zend/zend_object_handlers.lo
Zend/zend_objects_API.lo Zend/zend_mm.lo Zend/zend_default_classes.lo
Zend/zend_reflection_api.lo Zend/zend_execute.lo
sapi/apache/sapi_apache.lo sapi/apache/mod_php5.lo
sapi/apache/php_apache.lo main/internal_functions.lo -Wl,--whole-archive
/usr/lib/mysql/libmysqlclient.a /usr/lib/mysql/libmysqlclient.a
-Wl,--no-whole-archive -Wl,--rpath -Wl,/usr/lib/mysql -L/usr/lib/mysql
-lcrypt -lcrypt -lresolv -lm -ldl -lnsl -lz -lm -lz -lm -lz -lcrypt
-lnsl -lm -lnss_files -lnss_dns -lresolv -lnss_files -lnss_dns -lresolv
-lz -lm -lcrypt /usr/lib/libxml2.so -lz -lm -lcrypt -Wl,-soname
-Wl,libphp5.so -o .libs/libphp5.so
I believe the problem is in the following part of the gcc command:
'-Wl,--whole-archive /usr/lib/mysql/libmysqlclient.a
/usr/lib/mysql/libmysqlclient.a -Wl,--no-whole-archive'
Each time libtool sees -lmysqlclient its finding
/usr/lib/mysql/libmysqlclient.la which has old_library=libmysqlclient.a,
which points to the file /usr/lib/mysql/libmysqlclient.a.
libtool then assigns it to the variable $convenience, referring to it as
a libtool convenience library:
convenience="$convenience $dir/$old_library"
old_convenience="$old_convenience $dir/$old_library"
deplibs="$dir/$old_library $deplibs"
link_static=yes
Eventually, a bash trace shows $convenience getting to set to:
+ convenience=' /usr/lib/mysql/libmysqlclient.a
/usr/lib/mysql/libmysqlclient.a'
Also, at the top of libool, you'll see:
# Compiler flag to generate shared objects directly from archives.
whole_archive_flag_spec="\${wl}--whole-archive\$convenience
\${wl}--no-whole-archive"
This is how its getting passed along to gcc as:
'-Wl,--whole-archive /usr/lib/mysql/libmysqlclient.a
/usr/lib/mysql/libmysqlclient.a -Wl,--no-whole-archive'
Does it not make sense that passing this file twice will cause duplicate
symbol errors? Removing one of them from the command causes it to build
correctly.
Unless we can stop libtool from listing the same file twice as
convenience libraries, I think the simplest solution would be to prevent
listing of -lmysqlclient in EXTRA_LIBS in the Makefile.
[2 Jun 2006 4:22pm UTC] francis at web-resources dot org
I had the same problem, but I solve it with this options: ./configure \ --with-mysql=shared,/path/to/mysql_config \ --with-mysqli=shared,/path/to/mysql_config specifying "shared" tag, make and make install finish good. You must take care, you get 2 modules mysql.so and mysqli.so that you must include in your php.ini with extension=mysql.so and extension=mysqli.so
