未定义参考`mysql_init”(Undefined reference to `mysql_in

2019-06-25 09:57发布

我试图编译我的新的服务器上我的节目,但它目前还不为我工作。

错误日志是:

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已经#包括“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

Makefile文件:

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`

请参阅下面回答解释。

Answer 1:

的参数传递给链接器的顺序是显著。 列出需要的文件后,请使用MySQL配置。 连接器将看到cpulogger.o需求mysql_init,并期待在它之后列出的符号库。 如果库是在参数前面列出他们将不会再搜索。



文章来源: Undefined reference to `mysql_init'
标签: c++ c linker