Il tuo attuale comando di build:g++ demo.cpp -o demo
non contiene informazioni per il linker ld
contro quali librerie dovrebbero essere collegate. Per questo motivo viene visualizzato un errore del linker:
In questa documentazione viene scritto quali librerie sono necessarie.
Puoi collegare in modo statico o dinamico.
Collegamento statico significa che il tuo eseguibile verrà eseguito su macchine su cui non sono installate le librerie necessarie poiché le librerie si trovano all'interno dell'eseguibile. Questo rende anche l'eseguibile di dimensioni maggiori. Nel caso di MySQL Connector/C++ le librerie sono:libmysqlcppconn-static.a
e libmysqlclient.a
Collegamento dinamico significa che il tuo eseguibile dovrà trovare le librerie sulla macchina su cui dovrebbe essere eseguito. La libreria necessaria è:libmysqlcppconn.so
.
Il tuo comando di build con collegamento dinamico (usando libmysqlcppconn.so
) dovrebbe assomigliare a:
g++ demo.cpp -o demo -lmysqlcppconn
Nota ulteriormente la differenza tra -l
e -L
come menzionato qui su SO
oppure qui nella documentazione ufficiale del linker gcc
:
Non hai bisogno di un percorso (-L
) qui poiché le librerie dovrebbero trovarsi sotto /usr/local/lib
che è l'installazione predefinita ed è già nel percorso di ricerca del linker.