Я пытаюсь скомпилировать это (также указано в документации по соединителю mysql c ++): http://pastebin.com/HLv4zR0r
Но я получаю эти ошибки: http://pastebin.com/3t0UbeFy
Вот как я пытался компилировать:
g++ -o test test.cpp `mysql_config --cflags --libs` -I./include/cppconn -L./lib -lmysqlcppconn-static
Результат бега mysql_config --cflags --libs
является:
-I/usr/include/mysql -DBIG_JOINS=1 -fno-strict-aliasing -g
-L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -lrt -ldl
Редактировать:
После запуска предложенной команды Джонатана Уэйкли с правильно упорядоченными аргументами компоновщика,
g++ -o test test.cpp -I./include/cppconn -L./lib -lmysqlcppconn-static `mysql_config --cflags --libs`
Я получаю разные ошибки: http://pastebin.com/4EWNgy9i
Библиотека mysqlcppcon зависит от библиотек mysqlclient C, поэтому вам нужно поставить библиотеки mysqlclient после -lmysqlcppconn-static
g++ -o test test.cpp -I./include/cppconn -L./lib -lmysqlcppconn-static `mysql_config --cflags --libs`
Порядок аргументов линкера имеет значение. Компоновщик просматривает каждый файл по порядку и решает, нужны ли ему какие-либо символы из него. К тому времени, когда он видит libmysqlcppconn-static.a
файл, который он уже просматривал (и игнорировал) в библиотеке libmysqlclient.so, и больше не возвращается, чтобы посмотреть на него снова.
Других решений пока нет …