Uw huidige build-opdracht:g++ demo.cpp -o demo
bevat geen informatie voor de linker ld
waaraan bibliotheken moeten worden gekoppeld. Daarom krijg je een linkerfout:
In deze documentatie is geschreven welke bibliotheken nodig zijn.
U kunt statisch of dynamisch koppelen.
Statisch koppelen betekent dat uw uitvoerbare bestand zal draaien op machines waarop niet de benodigde bibliotheken zijn geïnstalleerd, aangezien de bibliotheken zich in het uitvoerbare bestand bevinden. Dit maakt het uitvoerbare bestand ook groter. In het geval van de MySQL Connector/C++ zijn de bibliotheken:libmysqlcppconn-static.a
en libmysqlclient.a
Dynamische koppeling betekent dat uw uitvoerbare bestand de bibliotheken moet vinden op de machine waarop het moet worden uitgevoerd. De benodigde bibliotheek is:libmysqlcppconn.so
.
Uw bouwopdracht met dynamisch koppelen (met behulp van libmysqlcppconn.so
) zou er als volgt uit moeten zien:
g++ demo.cpp -o demo -lmysqlcppconn
Let verder op het verschil tussen -l
en -L
zoals vermeld hier op SO
of hier in de officiële gcc-linkerdocumentatie
:
Je hebt geen pad nodig (-L
) hier omdat de bibliotheken onder /usr/local/lib
. zouden moeten liggen wat de standaardinstallatie is en al in het zoekpad van de linker staat.