Re: Problem compiling with MySql support
"Alejandro Guerrieri" <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Organization | Magicom |
| Message-ID | <006201c48b75$c659e0b0$0200a8c0@legolas> |
James, As I see, I´m not alone after all! It seems something is clashing between RedHat 9/9.1 and the configure stuff... I also noticed that the check that fails on the configure script runs ok from the command line. Pretty weird huh? :) I'll be trying today to find out where the problem is. I'll post the list if I find anything. Regards, ----- Original Message ----- From: "James Coleman" <[email protected]> To: "Alejandro Guerrieri" <[email protected]> Cc: <[email protected]> Sent: Thursday, August 26, 2004 3:42 PM Subject: Re: Problem compiling with MySql support > Hi Alejandro, Stipe, > > I think I see the same thing as Alejandro? > kannel 1.3.2 and cvs head with mysql, redhat 9.1. > > From Alejandro's original msg: > > >Configuring DB support ... > >checking whether to compile with MySQL support... searching > >checking for mysql_config... /usr/bin/mysql_config > >checking mysql version... 3.23.58 > >checking mysql > >libs... -L'/usr/lib/mysql' -lmysqlclient -lz -lcrypt -lnsl -lm > >checking for mysql_init in -lmysqlclient... no > >configure: error: Unable to find MySQL client libraries > > And me: > > [jamesc@betty] ~/src/kannel/gateway-cvshead/$ ./configure --disable-ssl --with-mysql --with-mysql-dlr=/usr > creating cache ./config.cache > checking cvs checkout date... 20040826 > ..... > > Configuring DB support ... > checking whether to compile with MySQL support... searching > checking for mysql_config... /usr/bin/mysql_config > checking mysql version... 3.23.58 > checking mysql libs... -L'/usr/lib/mysql' -lmysqlclient -lz -lcrypt -lnsl -lm > checking for mysql_init in -lmysqlclient... no > configure: error: Unable to find MySQL client libraries > > [jamesc@betty] ~/src/kannel/gateway-cvshead/$ tail -n 20 config.log > configure:4500: checking for mysql_init in -lmysqlclient > configure:4519: gcc -o conftest -D_XOPEN_SOURCE=600 -D_BSD_SOURCE -I/usr/include/libxml2 -rdynam ic conftest.c -lmysqlclient -L'/usr/lib/mysql' -lmysqlclient -lz -lcrypt -lnsl -lm -lresolv -lnsl -lm -lpthread -L/usr/lib -lxml2 -lz -lm 1>&5 > /usr/bin/ld: cannot find -lmysqlclient > collect2: ld returned 1 exit status > configure: failed program was: > #line 4508 "configure" > #include "confdefs.h" > /* Override any gcc2 internal prototype to avoid an error. */ > /* We use char because int might match the return type of a gcc2 > builtin and then its argument prototype would still apply. */ > char mysql_init(); > > int main() { > mysql_init() > ; return 0; } > > [jamesc@betty] ~/src/kannel/gateway-cvshead/$ ls /usr/lib/mysql > libdbug.a libmysqlclient_r.a libmysqlclient.so.10.0.0 > libheap.a libmysqlclient_r.so libmystrings.a > libmerge.a libmysqlclient_r.so.10 libmysys.a > libmyisam.a libmysqlclient_r.so.10.0.0 libnisam.a > libmyisammrg.a libmysqlclient.so > libmysqlclient.a libmysqlclient.so.10 > > [jamesc@betty] ~/src/kannel/gateway-1.3.2rc1/$ ls /usr/include/mysql/ > dbug.h my_config.h my_no_pthread.h mysql.h sslopt-case.h > errmsg.h my_global.h my_pthread.h mysql_version.h sslopt-longopts.h > m_ctype.h my_list.h mysql_com.h my_sys.h sslopt-usage.h > m_string.h my_net.h mysqld_error.h raid.h sslopt-vars.h > > > The configure options for mysql in 1.2.1 were different .... > > [jamesc@betty] ~/src/kannel/gateway-1.2.1/$ > ./configure --disable-ssl --with-mysql=/usr --enable-mysql --with-dlr=mysql > > Configuring DB support ... > checking whether to compile with MySQL support... searching in /usr > checking for /usr/include/mysql/mysql.h... yes > checking for mysql/mysql.h... yes > checking for mysql/mysql_com.h... yes > checking for mysql/mysql_version.h... yes > checking for mysql_init in -lmysqlclient... yes > checking whether to compile with MySQL support... yes > checking whether to compile with LibSDB support... disabled > > I just did that now and build so mysql definately alright. > > > > I argued a bit with the configure script and looked inside it. > I do think there is an error there ... but well my poor little head is getting confused! > Where kannel configure is testing mysql and figuring out stuff > it does some tests on gcc and ... well it is a bit convoluted/complicated > right there and I'm struggling. > But anyway in the configure gcc test for musql_init ... something slightly > weird happens. > > > > > On the commandline with that c prog and confdefs.h the following line is good: > > gcc -o nftest -D_XOPEN_SOURCE=600 -D_BSD_SOURCE -I/usr/include/libxml2 -rdynamic conftest.c -lmysqlclient -L'/usr/lib/mysql' -lmysqlclient -lz -lcrypt -lnsl -lm -lresolv -lnsl -lm -lpthread -L/usr/lib -lxml2 -lz -lm > > doesn't report "/usr/bin/ld: cannot find -lmysqlclient" > > BUT that is what seems to happen when that gcc line is called from the configure script. > > SO ... ??? could it be the -L'/usr/lib/mysql' those single quotes? > I've looked but nasty to find exactly where that is set in $LIBS > > If I do a HUGE cheat and after the test force it to be a success then > kannel build is good. (last two lines of snippet here:) > > > echo $ac_n "checking for mysql_init in -lmysqlclient""... $ac_c" 1>&6 > echo "configure:4500: checking for mysql_init in -lmysqlclient" >&5 > ac_lib_var=`echo mysqlclient'_'mysql_init | sed 'y%./+-%__p_%'` > if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then > echo $ac_n "(cached) $ac_c" 1>&6 > else > ac_save_LIBS="$LIBS" > LIBS="-lmysqlclient $MYSQL_LIBS $LIBS" > cat > conftest.$ac_ext <<EOF > #line 4508 "configure" > #include "confdefs.h" > /* Override any gcc2 internal prototype to avoid an error. */ > /* We use char because int might match the return type of a gcc2 > builtin and then its argument prototype would still apply. */ > char mysql_init(); > > int main() { > mysql_init() > ; return 0; } > EOF > if { (eval echo configure:4519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then > rm -rf conftest* > eval "ac_cv_lib_$ac_lib_var=yes" > else > echo "configure: failed program was:" >&5 > cat conftest.$ac_ext >&5 > rm -rf conftest* > eval "ac_cv_lib_$ac_lib_var=no" > fi > rm -f conftest* > LIBS="$ac_save_LIBS" > > fi > > echo james cheat Force this test to pass. YEAST EYS YES YES! > eval "ac_cv_lib_$ac_lib_var=yes" > > > Make sure to: > rm config.cache > after editing configure file. > > > > For now I give up on trying to figure out why the gcc line works on commandline and not > in configure script. :( > > > James. > > >