3

我正在尝试使用以下命令行编译用 c++ 编写的程序:

g++ test.cpp pugixml-1.0/src/pugixml.cpp -lcurl -lmysqlclient -lmysqlcppconn-static -lboost_thread

这在 Debian 32 位机器上一切顺利,但在 Ubuntu 64 位机器上失败了,我不知道为什么。我已经安装了使用 mysql 所需的所有软件包。错误消息如下所示:

/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libmysqlcppconn-static.a(mysql_client_api.cpp.o): In function `sql::mysql::NativeAPI::LibmysqlStaticProxy::thread_init()':
(.text+0x1): undefined reference to `mysql_thread_init'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libmysqlcppconn-static.a(mysql_client_api.cpp.o): In function `sql::mysql::NativeAPI::LibmysqlStaticProxy::thread_end()':
(.text+0x11): undefined reference to `mysql_thread_end'
etc. ...
collect2: ld returned 1 exit status

该消息很长,并且所有行看起来都与更改引用非常相似;)

4

1 回答 1

3

尝试反转-lmysqlclient -lmysqlcppconn-static链接器调用中的顺序。

如果对象 A 需要来自对象 B 的符号,则在链接器命令行中 A 必须位于 B 的前面。

于 2012-05-25T13:08:31.820 回答