我正在尝试在我的新服务器上编译我的程序,但目前它对我不起作用。
错误日志是:
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,所以那部分必须工作吗?
mysql_config 的输出:
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-server。
[解决了]:
将链接器库放在编译器命令的末尾是可行的。
all:
g++ main.cpp logger.cpp cpulogger.cpp -o test `mysql_config --cflags --libs`
请参阅下面的答案以获取解释。