Din nuværende build-kommando:g++ demo.cpp -o demo
indeholder ikke information om linkeren ld
hvilke biblioteker skal linkes mod. På grund af det får du en linkerfejl:
I denne dokumentation er skrevet hvilke biblioteker der er nødvendige.
Du kan enten linke statisk eller dynamisk.
Statisk linkning betyder, at din eksekverbare vil køre på maskiner, der ikke har de nødvendige biblioteker installeret, da bibliotekerne er inde i den eksekverbare. Dette gør også den eksekverbare størrelse større. I tilfælde af MySQL Connector/C++ er bibliotekerne:libmysqlcppconn-static.a
og libmysqlclient.a
Dynamisk linkning betyder, at din eksekverbare fil skal finde bibliotekerne på den maskine, hvor den skal køre. Det nødvendige bibliotek er:libmysqlcppconn.so
.
Din build-kommando med dynamisk linking (ved at bruge libmysqlcppconn.so
) skal se sådan ud:
g++ demo.cpp -o demo -lmysqlcppconn
Bemærk yderligere forskellen mellem -l
og -L
som nævnt her på SO
eller her i den officielle gcc linker-dokumentation
:
Du behøver ikke en sti (-L
) her, da bibliotekerne skal ligge under /usr/local/lib
som er standardinstallationen og allerede er i søgestien til linkeren.