Вашата текуща команда за компилация:g++ demo.cpp -o demo
не съдържа информация за линкера ld
срещу кои библиотеки трябва да се свържат. Поради това получавате грешка при свързване:
В тази документация пише кои библиотеки са необходими.
Можете да свържете статично или динамично.
Статично свързване означава, че вашият изпълним файл ще работи на машини, които нямат инсталирани необходимите библиотеки, тъй като библиотеките са вътре в изпълнимия файл. Това също прави изпълнимия файл по-голям по размер. В случая на MySQL Connector/C++ библиотеките са:libmysqlcppconn-static.a
и libmysqlclient.a
Динамично свързване означава, че вашият изпълним файл ще трябва да намери библиотеките на машината, където трябва да се изпълнява. Необходимата библиотека е:libmysqlcppconn.so
.
Вашата команда за изграждане с динамично свързване (с помощта на libmysqlcppconn.so
) трябва да изглежда така:
g++ demo.cpp -o demo -lmysqlcppconn
Освен това обърнете внимание на разликата между -l
и -L
както е споменато тук в SO
или тук в официалната документация за gcc linker
:
Нямате нужда от път (-L
) тук, тъй като библиотеките трябва да са под /usr/local/lib
което е инсталацията по подразбиране и вече е в пътя за търсене на линкера.