Brilliant Alejandro! You and Stipe did all the work. Not me.
mysql_config
Usage: /usr/bin/mysql_config [OPTIONS]
Options:
--cflags [-I'/usr/include/mysql']
--libs [-L'/usr/lib/mysql' -lmysqlclient -lz -lcrypt -lnsl -lm]
--socket [/var/lib/mysql/mysql.sock]
--port [3306]
--version [3.23.58]
Hmmm. The configure for 1.2.1 works with this.
I wonder does it use mysql_config ?
yes. And lots of the code in configure looks the same ... but I boggle
again. :( Possibly in 1.2.1 the mysql_config check fails but
a later check sets up mysql libs and vars correctly ... urngh.
I went through the configure script for 1.2.1 to try see what was happening
and how it works there but it would take me more time that I don't have now.
I think it would be good to fix this in the configure as I
guess it happens at least on all redhat systems.
James.
On Fri, Aug 27, 2004 at 02:23:39AM +0200, Alejandro Guerrieri wrote:
> Hi list,
>
> I've finally managed to find the problem compiling MySQL support on RedHat
> 9.
>
> The error comes from the single quotes around the library path on
> mysql_config output.
>
> James, you were right on the nail!:
> >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
>
> :)
>
> It seems at least that version of mysql (RedHat RPMs: mysql-3.23.58-1.9 and
> mysql-devel-3.23.58-1.9) output libraries that way...
>
> ]$ mysql_config
> Usage: /usr/bin/mysql_config [OPTIONS]
> Options:
> --cflags [-I'/usr/include/mysql']
> --libs
> [-L'/usr/lib/mysql' -lmysqlclient -lz -lcrypt -lnsl -lm]
> --socket [/var/lib/mysql/mysql.sock]
> --port [3306]
> --version [3.23.58]
>
> And more specifically:
>
> ]$ mysql_config --libs
> -L'/usr/lib/mysql' -lmysqlclient -lz -lcrypt -lnsl -lm
>
> Probably a silly status bug on mysql_config output. Fortunately, a very
> easy-to-solve one!
>
> Looking at configure.log, those buggers are there on -L'/usr/lib/mysql'
>
> configure:4459: checking for mysql_init in -lmysqlclient
> configure:4478: 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
>
> The funny part is, if you run that line on the terminal, the shell mangles
> things somehow and it works, but from the sh script it causes trouble.
>
> So, what I did was to modify the configure script on line 4453:
>
> Before:
> MYSQL_LIBS="$($MYSQL_CONFIG --libs)"
>
> After:
> MYSQL_LIBS="$($MYSQL_CONFIG --libs | sed 's/\x27//g')"
>
> Very simple: I've run the output for mysql_config through "sed" and removed
> hex character 27 (the single quote character) globally.
>
> After that, it compiled like a charm!
>
> I also did the mod on configure.in and tried to run autoconf, but it
> complained about libobjs:
>
> ]$ autoconf
> configure.in:135: error: do not use LIBOBJS directly, use AC_LIBOBJ (see
> section `AC_LIBOBJ vs LIBOBJS'
> If this token and others are legitimate, please use m4_pattern_allow.
> See the Autoconf documentation.
>
> So I left the excercise for you autoconf gurus ;)
>
> Anyway, the change to make on configure.in is on line 798:
>
> Before:
> MYSQL_LIBS="$($MYSQL_CONFIG --libs)"
>
> After:
> MYSQL_LIBS="$($MYSQL_CONFIG --libs | sed 's/\x27//g')"
>
> (Sorry, I'm too lazy to make a diff just for this small mod ;) )
>
> The mod could be applied harmlessly to any installation. If the single
> quotes are missing (as they should be!) sed won�t change anything and it
> will compile as always, so I suggest this (or at least an equivalent mod)
> could be applied to CVS to allow to us RedHat 9 Kannellers to compile MySQL
> support. Moreover, sed is used many times on the configure script, so it
> won�t add any new dependencies.
>
> Hope it helps someone!
>
> Best regards and thank you all people who helped me to find the solution
> (Stipe and James specially!)
>
>