2017-08-29 5 views
0

Ich habe einige C-Code, #include s die Datei <mysql/mysql.h>. Ich laufe auf einem Mac und kann nicht herausfinden, wie man mysql installiert (nach dem Ausführen der auf SO gefundenen Lösung existiert das Verzeichnis mysql nicht einmal in der Systembibliothek). Ich konnte MySQL aus dem Quellcode herunterladen, und jetzt habe ich eine mysql.h Datei - im "include" -Verzeichnis des Quellcodes.Wie importiere ich manuell .h-Dateien in die Systembibliothek?

Das Verschieben dieser Datei in die Systembibliothek allein wird jedoch nicht dazu führen, dass mein Programm funktioniert. Ich erwarte, dass ich die Bibliothek kompilieren muss (was ich getan habe), und die Binärdatei irgendwohin verschieben muss, um mit meinem Programm verlinkt zu sein.

Wie von @ RustyX vorgeschlagen, habe ich das Mac MySQL-Paket installiert. Das legte eine Kopie von mysql.h in das Verzeichnis /usr/local/mysql-5.7.19-macos10.12-x86_64/include/. Jedoch:

1) Ich verwende gcc, um die .c-Datei zu kompilieren. Ich bin mir nicht sicher, wie man gcc konfiguriert, um das fragliche Verzeichnis einzuschließen. Ich habe versucht, -L(directory path) - sowohl für die installierte Mac MySQL-Paket und die MySQL-Quellcode ich downloaded-- aber ich bekomme die folgende Fehlermeldung:

ld: library not found for -lmysqlclient 

Gibt es einen anderen Weg, den ich für mysqlclient umfassen würde? Oder ein anderes zu installierendes Paket?

2) Selbst wenn ich es einschließe, wird es die Datei immer noch nicht finden, da der Name der aufgerufenen Datei <mysql/mysql.h> ist und der Dateiname <include/mysql.h> ist. Da die Datei von anderen verwendet wird, ist hier die beste Vorgehensweise, das Verzeichnis include in mysql umzubenennen? Oder ändern Sie den Pfad in der .c-Datei und ändern Sie ihn jedes Mal vor der Übergabe erneut?

+0

Ehh .. 1) Installieren Sie die [mysql Paket] ausführen (https://dev.mysql.com /doc/refman/5.6/en/osx-installation-pkg.html), 2) Konfigurieren Sie zusätzliche include und lib Pfade für Ihr Projekt (etwas wie/usr/local/mysql ...) – rustyx

+0

Versuchte Ihre Lösung und blieb stecken ; Den aktuellen Status finden Sie im obigen Beitrag. – Alex

+1

Ich denke, Sie verwirren Includes und Bibliotheken. Wenn Sie "make install" vorgenommen haben, werden die Verzeichnisse und Dateien gedruckt, die erstellt/installiert wurden. Sie müssen das richtige Argument -I und das Argument -L basierend darauf festlegen, wie die Installation ausgeführt wurde. Du sagst auch, du hast "L" mit dir versucht. Wurde in diesem Verzeichnis "libmysqlclient.dylib" installiert? –

Antwort

0

Haben Sie eine Anweisung wie folgt versucht,

#include <mysql.h> //in your program 

zu kompilieren und

gcc -w -c -g -I/usr/include/mysql filename.c 
gcc -o filename filename.o -L/usr/lib64/mysql -lmysqlclient 
./filename (input params) 
+0

Ja, ich habe es versucht, und als es 'fataler Fehler: 'mysql.h' Datei nicht gefunden ', dann versuchte ich stattdessen # einschließlich den vollständigen Pfad von' mysql.h'. Zu diesem Zeitpunkt gab es die Fehler, die ich in meinem Beitrag zitiert habe. Aber für das '-L 'Argument, habe ich' -L/Users/pc/Downloads/mysql-5.0.92/include' gesetzt - welches das Verzeichnis ist, das die 'mysql.h' Datei hat. Vielleicht sollte ich einen anderen verwenden? – Alex