Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql-connector cpp in centos 6 undefinierter referenz auf

Ihr aktueller Build-Befehl:g++ demo.cpp -o demo enthält keine Informationen für den Linker ld gegen welche Bibliotheken gelinkt werden soll. Aus diesem Grund erhalten Sie einen Linker-Fehler:

In dieser Dokumentation geschrieben, welche Bibliotheken benötigt werden.

Sie können entweder statisch oder dynamisch verlinken.
Statische Verlinkung bedeutet, dass Ihre ausführbare Datei auf Computern ausgeführt wird, auf denen die erforderlichen Bibliotheken nicht installiert sind, da sich die Bibliotheken in der ausführbaren Datei befinden. Dadurch wird auch die ausführbare Datei größer. Im Fall von MySQL Connector/C++ sind die Bibliotheken:libmysqlcppconn-static.a und libmysqlclient.a
Dynamische Verknüpfung bedeutet, dass Ihre ausführbare Datei die Bibliotheken auf dem Computer finden muss, auf dem sie ausgeführt werden soll. Die benötigte Bibliothek ist:libmysqlcppconn.so .

Ihr Build-Befehl mit dynamischer Verlinkung (unter Verwendung von libmysqlcppconn.so ) sollte folgendermaßen aussehen:

g++ demo.cpp -o demo -lmysqlcppconn

Beachten Sie außerdem den Unterschied zwischen -l und -L wie erwähnt hier auf SO oder hier in der offiziellen gcc-Linker-Dokumentation :

Sie brauchen keinen Pfad (-L ) hier, da die Bibliotheken unter /usr/local/lib liegen sollten Dies ist die Standardinstallation und befindet sich bereits im Suchpfad des Linkers.