Seit nun mehr 2 Tagen bin ich am 'stricken' und komm nicht wirklich weiter: ich versuche mod_sqlinclude für den Apache (1.3.34) zu bauen, jedoch scheiterts immer an dem blöden mysqlclient.
Nach ca 5h googlen weiß ich nun, dass mysqclient die libmysqlclient(.a|.so) sein soll(te). Gut, nachdem ich in meinem lib-dir (MySQL-Source von mysql.com) keine .so file finden konnte habe ich ld angeworfen:
Code: Select all
# ld -share -o /opt/mysql_max_4.1.14_i686_main/lib/libmysqlclient.so /opt/mysql_max_4.1.14_i686_main/lib/libmysqlclient.a
Code: Select all
# /opt/apache_1.3.34/bin/apxs -l/opt/mysql_max_4.1.14_i686_main/lib/libmysqlclient.so -c mod_sqlinclude.c
gcc -DLINUX=22 -DHAVE_SET_DUMPABLE -DNO_DBM_REWRITEMAP -DUSE_HSREGEX -fpic -DSHARED_MODULE -I/opt/apache_1.3.34/include -c mod_sqlinclude.c
gcc -shared -o mod_sqlinclude.so mod_sqlinclude.o -l/opt/mysql_max_4.1.14_i686_main/lib/libmysqlclient.so
/usr/lib/gcc-lib/i386-pc-linux-gnu/3.3.5-20050130/../../../../i386-pc-linux-gnu/bin/ld:
cannot find -l/opt/mysql_max_4.1.14_i686_main/lib/libmysqlclient.so
collect2: ld returned 1 exit status
apxs:Break: Command failed with rc=1
Code: Select all
# dir /opt/mysql_max_4.1.14_i686_main/lib
total 14504
drwxr-xr-x 2 root root 4096 Mar 19 20:57 .
drwxr-xr-x 14 root root 4096 Aug 30 2005 ..
-rw-r--r-- 1 root root 10886 Aug 17 2005 libdbug.a
-rw-r--r-- 1 root root 879270 Oct 25 2001 libmygcc.a
-rw-r--r-- 1 root root 1685 Aug 17 2005 libmysql.imp
-rw-r--r-- 1 root root 1290522 Aug 17 2005 libmysqlclient.a
-rwxr-xr-x 1 root root 533 Mar 19 20:57 libmysqlclient.so
-rw-r--r-- 1 root root 1298296 Aug 17 2005 libmysqlclient_r.a
-rw-r--r-- 1 root root 8896028 Aug 17 2005 libmysqld.a
-rw-r--r-- 1 root root 1045628 Aug 17 2005 libmystrings.a
-rw-r--r-- 1 root root 276732 Aug 17 2005 libmysys.a
-rw-r--r-- 1 root root 1079116 Aug 17 2005 libndbclient.a
-rwxr-xr-x 1 root root 1683 Aug 17 2005 libndbclient.la
#
/opt/mysql_max_4.1.14_i686_main => mysql_server
/opt/apache_1.3.34 => web_server
1. Frage: Was ist der mysqlclient, wenn es nicht libmysqlclient.a ist?
2. Frage: Was mach ich falsch, sollt alles bisher durchgeführte korrekt sein?! *kopfkratz*
Danke im Voraus (ein mittlerweile verzweifelter Spinner ;)).
==== [edit #1] ====
Des Rätsels Lösung:
Code: Select all
# /opt/mysql_max_4.1.14_i686_main/bin/mysql_config --libs
-L/opt/mysql_max_4.1.14_i686/lib -lmysqlclient
Code: Select all
# /opt/apache_1.3.34/bin/apxs -L/opt/mysql_max_4.1.14_i686_main/lib -lmysqlclient -c mod_sqlinclude.c
gcc -DLINUX=22 -DHAVE_SET_DUMPABLE -DNO_DBM_REWRITEMAP -DUSE_HSREGEX -fpic -DSHARED_MODULE -I/opt/apache_1.3.34/include -c mod_sqlinclude.c
gcc -shared -o mod_sqlinclude.so mod_sqlinclude.o -L/opt/mysql_max_4.1.14_i686_main/lib -lmysqlclient
#
Code: Select all
# cp mod_sqlinclude.so /opt/apache_1.3.34/libexec/
Code: Select all
# /opt/apache_1.3.34/bin/apachectl configtest
Syntax error on line 22 of /opt/apache_1.3.34/conf/httpd.conf:
Cannot load /opt/apache_1.3.34/libexec/mod_sqlinclude.so into server: libmysqlclient.so: cannot open shared object file: No such file or directory
#
==== [edit #2] ====
Und weil das Ganze so schön war, gleich nochmal alles von Anfang, da da irgendwo ein Hund begraben liegt:
Code: Select all
# rm -ifr /opt/apache_1.3.34/libexec/mod_sqlinclude.so /opt/mysql_max_4.1.14_i686_main/lib/libmysqlclient.so ./mod_sqlinclude-1.4
Code: Select all
# tar xvfz mod_sqlinclude-1.4.tar.gz && cd mod_sqlinclude-1.4
Original Makefile (nur der wichtige Bereich):
Code: Select all
[...]
APXS=apxs
APACHECTL=apachectl
[...]
#DEF=-Dmy_define=my_value
#INC=-Imy/include/dir
#LIB=-Lmy/lib/dir -lc -lmylib
LIB=-lmysqlclient
[...]
Code: Select all
[...]
APXS=/opt/apache_1.3.34/bin/apxs
APACHECTL=/opt/apache_1.3.34/bin/apachectl
[...]
#DEF=-Dmy_define=my_value
#INC=-Imy/include/dir
LIB=-L/opt/mysql_max_4.1.14_i686_main/lib -lc
LIB+=-lmysqlclient
[...]
Code: Select all
# make
/opt/apache_1.3.34/bin/apxs -c -lmysqlclient mod_sqlinclude.c
gcc -DLINUX=22 -DHAVE_SET_DUMPABLE -DNO_DBM_REWRITEMAP -DUSE_HSREGEX -fpic -DSHARED_MODULE -I/opt/apache_1.3.34/include -c mod_sqlinclude.c
mod_sqlinclude.c:34:25: mysql/mysql.h: No such file or directory
mod_sqlinclude.c:70: error: syntax error before "MYSQL"
[...]
Code: Select all
# mkdir mysql && ln -sf /opt/mysql_max_4.1.14_i686_main/include/* ./mysql/
Code: Select all
# make
/opt/apache_1.3.34/bin/apxs -c -lmysqlclient mod_sqlinclude.c
gcc -DLINUX=22 -DHAVE_SET_DUMPABLE -DNO_DBM_REWRITEMAP -DUSE_HSREGEX -fpic -DSHARED_MODULE -I/opt/apache_1.3.34/include -c mod_sqlinclude.c
mod_sqlinclude.c:34:25: mysql/mysql.h: No such file or directory
mod_sqlinclude.c:70: error: syntax error before "MYSQL"
[...]
Code: Select all
# dir ./
total 56
drwxr-xr-x 3 1001 1001 4096 Mar 20 09:40 .
drwxr-xr-x 38 root root 4096 Mar 20 09:32 ..
-rw-r--r-- 1 root root 2071 Feb 13 2002 CHANGES.txt
-rw-r--r-- 1 root root 262 Feb 13 2002 LICENSE.txt
-rw-r--r-- 1 root root 1315 Mar 20 09:38 Makefile
-rw-r--r-- 1 root root 11127 Jan 20 2002 README.txt
-rw-r--r-- 1 root root 13160 Feb 13 2002 mod_sqlinclude.c
drwxr-xr-x 2 root root 4096 Mar 20 09:40 mysql
-rw-r--r-- 1 root root 667 Jan 14 2002 test.sql
#
# dir ./mysql
total 8
drwxr-xr-x 2 root root 4096 Mar 20 09:40 .
drwxr-xr-x 3 1001 1001 4096 Mar 20 09:40 ..
[...]
lrwxrwxrwx 1 root root 47 Mar 20 09:40 mysql.h -> /opt/mysql_max_4.1.14_i686_main/include/mysql.h
[...]
Code: Select all
[...]
#include <mysql/mysql.h>
[...]
Code: Select all
[...]
#include </opt/mysql_max_4.1.14_i686_main/include/mysql.h>
[...]
Code: Select all
# make
/opt/apache_1.3.34/bin/apxs -c -L/opt/mysql_max_4.1.14_i686_main/lib -lmysqlclient mod_sqlinclude.c
gcc -DLINUX=22 -DHAVE_SET_DUMPABLE -DNO_DBM_REWRITEMAP -DUSE_HSREGEX -fpic -DSHARED_MODULE -I/opt/apache_1.3.34/include -c mod_sqlinclude.c
gcc -shared -o mod_sqlinclude.so mod_sqlinclude.o -L/opt/mysql_max_4.1.14_i686_main/lib -lc -lmysqlclient
/usr/lib/gcc-lib/i386-pc-linux-gnu/3.3.5-20050130/../../../../i386-pc-linux-gnu/bin/ld: warning: creating a DT_TEXTREL in object.
#