Mysql
 sql >> Database >  >> RDS >> Mysql

connettore mysql cpp in centos 6 undefined riferimento a

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.