#13902 [Com]: ld: "cannot find -lmysqlclient" (-L flag missing)
| From: | yves_boisjoly at sympatico dot ca | Date: | Wed, 16 Oct 2002 15:03:38 +0000 |
| Subject: | #13902 [Com]: ld: "cannot find -lmysqlclient" (-L flag missing) | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-22578@lists.php.net to get a copy of this message | ||
ID: 13902
Comment by: yves_boisjoly@sympatico.ca
Reported By: jasonw@rpdesign.com
Status: Closed
Bug Type: Compile Failure
Operating System: RedHat Linux 2.4.7-10 #1 i686
PHP Version: 4.0.6
New Comment:
I was using RedHat 7.3 and I did compile with success all of these
packages previously :
MySQL 3.23.52
Apache 1.23.26
Mod_Php 4.2.2
All package are compiled with --prefix=/soft/<Package_name>
Now, after having installed RedHat 8.0, I can't compile MySQL myself
anymore since GCC 3.2 is now used with RedHat 8.0 and MySQL doesn't
suggest compile itself with another version of gcc than the 2.95
version!
So I decided to use the MySQL version included with RedHat 8.0. I
compiled with success the latest Apache version "2.0.43".
When I am trying to compile Mod_Php 4.2.3 with these parameters :
CC="gcc" OPTIM="-O3" ./configure --prefix=/soft/Mod_Php \
--disable-debug \
--disable-rpath \
--enable-debugger \
--enable-ftp \
--enable-inline-optimization \
--enable-magic-quotes \
--enable-pic \
--disable-safe-mode \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-track-vars \
--enable-wddx \
--enable-yp \
--with-apxs2=/soft/Apache/bin/apxs \
--with-bz2 \
--with-curl \
--with-db3 \
--without-dom \
--with-exec-dir=/soft/Mod_Php/bin \
--with-gd \
--with-gdbm \
--with-gettext \
--with-jpeg-dir=/usr \
--with-layout=GNU \
--without-mm \
--with-openssl \
--with-mysql="/usr" \
--without-oci8 \
--without-oracle \
--without-unixODBC \
--with-png \
--with-pspell \
--with-regex=system \
--with-ttf \
--with-xml \
--with-zlib
I have exactly the same error message as you said!
But, comparing my old MySQL structure and the new one from RedHat 8.0,
I noticed that there is a file named
"/soft/MySQL/lib/mysql/libmysqlclient.la" that is missing under
"/usr/lib/mysql". Here is the content of this file :
========================================================
# libmysqlclient.la - a libtool library file
# Generated by ltmain.sh - GNU libtool 1.3.5 (1.385.2.206 2000/05/27
11:12:27)
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname=''
# Names of this library.
library_names=''
# The name of the static archive.
old_library='libmysqlclient.a'
# Libraries that this one depends upon.
dependency_libs=' -lz -lcrypt -lnsl -lm'
# Version information for libmysqlclient.
current=11
age=0
revision=0
# Is this an already installed library?
installed=yes
# Directory that this library needs to be installed in:
libdir='/soft/MySQL/lib/mysql'
========================================================
I copied this file under "/usr/lib/mysql" and I changed the last line
for this :
libdir='/usr/lib/mysql'
And the "make" has pass since!!!
Yves
Previous Comments:
------------------------------------------------------------------------
[2001-11-22 05:50:40] sander@php.net
No feedback. Closing.
------------------------------------------------------------------------
[2001-11-01 22:26:11] sniper@php.net
Could you please try latest CVS? I fixed one thing
which might have caused this.
--Jani
------------------------------------------------------------------------
[2001-11-01 16:44:19] jasonw@rpdesign.com
Short version:
I ran ./configure with --with-mysql=/usr (among other things... see
below)
I got a compiler error (output below) that said "cannot find
-lmysqlclient".
I believe this is because the compile command (below) should contain
"-L/usr/lib/mysql". this flag is in config_vars.mk as follows:
MYSQL_LIBS = -L/usr/lib/mysql -lmysqlclient -L/usr -z
I also found this line in config_vars.mk:
PHP_RPATHS = /usr/lib/mysql
I wonder if that should have a -L in it...
------------
Solution (ok hack...)
------------
I got php to compile by adding -L/usr/lib/mysql to the following line
in config_vars.mk starting with "EXTRA_LIBS = "
---------------
References
---------------
Firstly, all the options I passed to ./configure:
./configure 'i386-redhat-linux' '--prefix=/usr' '--exec-prefix=/usr'
'--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc'
'--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib'
'--libexecdir=/usr/libexec' '--localstatedir=/var'
'--sharedstatedir=/usr/com' '--mandir=/usr/share/man'
'--infodir=/usr/share/info' '--prefix=/usr'
'--with-config-file-path=/etc' '--disable-debug' '--enable-pic'
'--disable-rpath' '--enable-inline-optimization'
'--with-apxs=/usr/sbin/apxs' '--with-bz2' '--with-curl'
'--with-db3'
'--with-dom' '--with-exec-dir=/usr/bin' '--with-gd'
'--with-gdbm'
'--with-gettext' '--with-jpeg-dir=/usr' '--with-mm'
'--with-openssl'
'--with-png' '--with-regex=system' '--with-ttf'
'--with-zlib'
'--with-layout=GNU' '--enable-debugger' '--enable-ftp'
'--enable-magic-quotes' '--enable-safe-mode' '--enable-sockets'
'--enable-sysvsem' '--enable-sysvshm' '--enable-track-vars'
'--enable-yp' '--enable-wddx' '--with-mysql=/usr'
'--without-unixODBC'
'--without-oracle' '--without-oci8' '--with-xml'
Seccondly, the relivant bit of the output from make:
Making all in .
make[1]: Entering directory `/home/jason/software/php-4.0.6'
/bin/sh /home/jason/software/php-4.0.6/libtool --silent --mode=link gcc
-I. -I/home/jason/software/php-4.0.6/
-I/home/jason/software/php-4.0.6/main/home/jason/software/php-4.0.6
-I/usr/include/apache -I/home/jason/software/php-4.0.6/Zend -I/include
-I/usr/include/mysql
-I/home/jason/software/php.0.6/ext/xml/expat/xmltok
-I/home/jason/software/php-4.0.6/ext/xml/expat/xmlparse
-I/home/jason/software/php-4.0.6/TSRM -DLINUX=22 -DEAPI
-DEAPI_MMUSE_EXPAT -DEAPI_MM_CORE_PATH=/var/run/httpd.mm -DSUPPORT_UTF8
-DXML_BYTE_ORDER=12 -g -O2 -o libphp4.la -rpath
/home/jason/software/php-4.0.6/libsvoid-version /usr/lib/mysql stub.lo
Zend/libZend.la sapi/apache/libsapi.la main/libmain.la
ext/zlib/libzlib.la ext/bz2/libbz2.la ext/curl/libcurl.
ext/dba/libdba.la ext/domxml/libdomxml.la ext/ftp/libftp.la
ext/gd/libgd.la ext/gettext/libgettext.la ext/mysql/libmysql.la
ext/openssl/libopenssl.lext/pcre/libpcre.la ext/posix/libposix.la
ext/session/libsession.la ext/sockets/libsockets.la
ext/standard/libstandard.la ext/sysvsem/libsysvsem.la
e/sysvshm/libsysvshm.la ext/wddx/libwddx.la ext/xml/libxml.la
ext/yp/libyp.la TSRM/libtsrm.la -lpam -ldl -lmm -lmysqlclient -lz -lgd
-ljpeg -lz -lxml2ldb -lgdbm -lcurl -ldl -lcrypto -lssl -lbz2 -lz
-lcrypt -lssl -lcrypto -lresolv -lm -ldl -lnsl -lresolv
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status
make[1]: *** [libphp4.la] Error 1
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=13902&edit=1