Я пытаюсь скомпилировать свою программу на моем новом сервере, но в данный момент она у меня не работает.
Журнал ошибок:
rasmus@web01:~/c++$ make test
g++ `mysql_config --cflags --libs` main.cpp logger.cpp cpulogger.cpp -o test
/tmp/ccPaMZUy.o: In function `CPULogger':
/home/rasmus/c++/cpulogger.cpp:7: undefined reference to `mysql_init'
/home/rasmus/c++/cpulogger.cpp:8: undefined reference to `mysql_real_connect'
/home/rasmus/c++/cpulogger.cpp:10: undefined reference to `mysql_get_client_info'
/tmp/ccPaMZUy.o: In function `~CPULogger':
/home/rasmus/c++/cpulogger.cpp:16: undefined reference to `mysql_close'
collect2: ld returned 1 exit status
make: *** [all] Error 1
Как вы можете видеть, я компилирую для MySQL - я проверил, что mysql.h присутствует во включенных путях.
Что я упускаю?
cpulogger.cpp имеет #include "cpulogger.h" вверху, затем cpulogger.h имеет это:
#include <iostream>
#include <fstream>
#include <mysql/mysql.h>
Компилятор не жалуется на отсутствие mysql/mysql.h, так что эта часть должна работать?
rasmus@web01:~/c++$ mysql_config --cflags --libs
-I/usr/include/mysql -DBIG_JOINS=1 -fno-strict-aliasing -g
-L/usr/lib -lmysqlclient -lpthread -lz -lm -lrt -ldl
all:
g++ `mysql_config --cflags --libs` main.cpp logger.cpp cpulogger.cpp -o test
test: all
./test
Это новая установка сервера Ubuntu с установленным на нем сервером mysql.
[решено]:
Добавление библиотек компоновщика в конец команд компилятора работает.
all:
g++ main.cpp logger.cpp cpulogger.cpp -o test `mysql_config --cflags --libs`
Объяснение см. в ответе ниже.