Heute musste ich um einen Fehler ausschließen zu können ein Programm unter Ubuntu 11.10 Compilieren, das Ding verwendet die MySQL C-API recht häufig und beim ersten Versuch habe ich nur jede Menge Fehlermeldungen erhalten:
/tmp/ccx4v7xL.o: In function `checkAuftrag()‘:
auftrag_details1.c:(.text+0x8a): undefined reference to `mysql_query‘
auftrag_details1.c:(.text+0x9c): undefined reference to `mysql_use_result‘
auftrag_details1.c:(.text+0xad): undefined reference to `mysql_fetch_row‘
auftrag_details1.c:(.text+0x302): undefined reference to `mysql_free_result‘
auftrag_details1.c:(.text+0x3eb): undefined reference to `mysql_error‘
Nachdem ich alles Mögliche überprüft habe – Header Dateien installiert, Pfade korrekt gesetzt usw. – habe ich eine Lösung für das Problem gefunden!
Der ursprüngliche Compile Aufruf lautete wie folgt:
g++ -O2 -Wall -lmysqlclient -L/usr/lib/mysql -fPIC -DHAVE_CONFIG_H -I. -I/usr/local/include -I/usr/include/mysql -o auftrag_details1.cgi auftrag_details1.c
Und lieferte die Fehlermeldung von oben, wenn man jetzt einfach nur den Teil mit „-lmysqlclient“ raus nimmt und ganz ans Ende setzt, dann läuft der Compile wieder wie am Schnürchen!
g++ -O2 -Wall -L/usr/lib/mysql -fPIC -DHAVE_CONFIG_H -I. -I/usr/local/include -I/usr/include/mysql -o auftrag_details1.cgi auftrag_details1.c -lmysqlclient
Und schon ist das Programm fertig compiliert…!