2010-08-03 9 views
7
#include <my_global.h> 
#include <mysql.h> 

int main(int argc, char **argv) 
{ 
    printf("MySQL client version: %s\n", mysql_get_client_info()); 
} 

~ $ gcc -o mysql-test MySQL-Test.cgcc wird nicht kompilieren und MySQL-C-Bibliotheken

im Versuch, dieses Testprogramm von Terminal auszuführen, sondern erhalten die folgende Fehlermeldung führen :

/tmp/cceEmI0I.o: In Funktion main': MySQL-Test.c:(.text+0xa): undefined reference to mysql_get_client_info‘

, was falsch ist? Mein System ist ubuntu

Antwort

14

MySQL kommt mit einem speziellen Skript namens mysql_config. Es bietet Ihnen nützliche Informationen zum Kompilieren Ihres MySQL-Clients und zum Verbinden mit dem MySQL-Datenbankserver.

Bestanden --libs Option - Bibliotheken und Optionen erforderlich, um mit der MySQL-Client-Bibliothek zu verknüpfen.

$ mysql_config --libs 

Typische Leistung:

gcc -o mysql-test MySQL-Test.c $(mysql_config --libs) 
+0

Dank, dass Skript aufzuräumen afew Dinge geholfen, die folgenden funktioniert gut: "gcc -o mysql-test MySQL-Test.c -lmysqlclient" jetzt , dass die Testklasse arbeitet, würde, wie ich Port diesen Befehl an eine IDE wie NetBeans? – JB87

+0

Ich würde vorschlagen, ein Makefile zu schreiben, das sich darum kümmert, die Anwendung automatisch zu kompilieren. Dort können Sie die Befehlszeilenargumente für GCC angeben. Informationen zum Schreiben von Makefiles finden Sie hier: http://www.delorie.com/djgpp/doc/ug/larger/makefiles.html Es gibt viele Webseiten, die Ihnen helfen, Ihr eigenes Makefile zu schreiben. – Gui13

+0

@codaddict Wie würdest du das in Windows machen? – cokedude

2

Sie verknüpfen nicht mit den Bibliotheken. Verwendung: gcc -llibrarygoeshere -o mysql-test MySQL-Test.c Weitere Informationen zum Verknüpfen mit gcc finden Sie unter here.

4

Sie benötigen gcc -o mysql-test MySQL-Test.c -L/usr/local/mysql/lib -lmysqlclient -lz

ersetzen -L/usr/local/mysql/lib mit, wo immer Sie Client-Bibliothek ist (wenn es nicht bereits in Ihrem libpath ist)

Siehe MySql instructions for building clients.

2

Es ist kein Kompilierungsfehler. Es ist ein Linkfehler.

Fügen Sie die mysql-Bibliothek hinzu, um Ihre ausführbare Datei mit der Option -lmysql zu erstellen.

1

Vielleicht spät, aber für mich gearbeitet
Wenn Sie ein IDE verwenden:

-L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib64 -lssl -lcrypto 

Jetzt können Sie diese auf Ihre Kompilierung/link Zeile hinzufügen Sie sollten die Bibliothek mit Ihrem Projekt verknüpfen.
Ich benutze CodeBlocks auf Ubuntu 12.4 64x. Zum Verknüpfen der Bibliothek sollten Sie zu Projekt -> Erstellungsoptionen -> Linker-Einstellungen gehen und die Bibliothek hinzufügen. das ist mein lib-Pfad: /usr/lib/x86_64-linux-gnu/libmysqlclient.so

Hoffe, nützlich zu sein ...

3

Für Anwendungen von Netbeans auf Linux

Öffnen Sie machen Datei (Makefile) und fügen Sie die folgenden Zeilen

# These are the flags that gcc requires in order to link correctly against our installed 
# client packages 
MYSQL_LIBS := $(shell mysql_config --libs) 

direkt unter dem Umwelt-Block. Klicken Sie mit der rechten Maustaste auf Ihren Projektknoten, wählen Sie Eigenschaften, Erstellen und fügen Sie $(MYSQL_LIBS) zum Parameter Zusätzliche Optionen hinzu.

Verwandte Themen