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.