无法链接libmysqlclient.a?

时间:2017-11-01 03:49:29

标签: mysql

我正在使用Ubuntu 14.04,我已经安装了libmysqlclient-dev包。但由于mysql_init符号缺失,我总是会收到链接错误。 我的源代码,Makefile,运行时结果和符号信息如下:

igsrd@naivechou/~/project/m01/uuid_sign>cat main.cpp
#include <cstdio>
#include <cstdlib>
#include "mysql/mysql.h"
int main(int argc,char** argv)
{   
    auto con = mysql_init(nullptr);
    //printf("mysql client version : %s\n",mysql_get_client_info());
    exit(EXIT_SUCCESS);
}


igsrd@naivechou/~/project/m01/uuid_sign>LANG= && make -B
g++ -o main.o -c main.cpp -std=c++11 -ggdb
g++ -o uuid_sign -L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -ldl main.o
main.o: In function `main':
/home/igsrd/project/m01/uuid_sign/main.cpp:6: undefined reference to `mysql_init'
collect2: error: ld returned 1 exit status
make: *** [uuid_sign] Error 1


igsrd@naivechou/~/project/m01/uuid_sign>nm -C /usr/lib/x86_64-linux-gnu/libmysqlclient.a | grep mysql_init
0000000000002b10 T mysql_init
0000000000002d30 T mysql_init_character_set
                 U mysql_init_character_set

来源非常简单,只需要一行来调用mysql_init()。 制作过程显示了编译器和链接器的每个选项,我认为没有缺少的选项。

错误消息是undefined reference链接错误,因此我将libmysqlclient.a转储到grep mysql_init,并且它未处于未定义状态。

现在我真的不知道。这有什么问题?

1 个答案:

答案 0 :(得分:0)

更改你的第二个命令,试试这个(改变main.o的位置):

    g++ -o uuid_sign main.o -L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -ldl