1

我正在尝试使用 MySQL C++ 连接器库编译一段相当简单的代码。我将库静态链接到我的应用程序。

g++ "./source/main.cpp" -std=c++11 -m64 -static -pthread -lmysqlcppconn -lboost_system -lboost_filesystem -lfastcgipp -lboost_thread -lboost_date_time -o "/var/www/index.fcgi"

然而,当我执行这个命令来编译程序时,我留下了数百个undefined reference to ...错误。几个例子:

/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libmysqlcppconn.a(mysql_client_api.cpp.o): In function `sql::mysql::NativeAPI::LibmysqlStaticProxy::affected_rows(st_mysql*)':
(.text+0x164): undefined reference to `mysql_affected_rows'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libmysqlcppconn.a(mysql_client_api.cpp.o): In function `sql::mysql::NativeAPI::LibmysqlStaticProxy::autocommit(st_mysql*, char)':
(.text+0x18d): undefined reference to `mysql_autocommit'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libmysqlcppconn.a(mysql_client_api.cpp.o): In function `sql::mysql::NativeAPI::LibmysqlStaticProxy::close(st_mysql*)':
(.text+0x1ac): undefined reference to `mysql_close'
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
collect2: error: ld returned 1 exit status

当我链接库是动态链接时,一切正常。

如何静态链接这个库?

4

1 回答 1

4

因为您是静态链接,所以您必须引用您使用的所有库,即使是间接引用,而在动态链接时这不是必需的。

这些未定义的函数位于 C MySQL API 中,因此您应该添加 -lmysqlclient

于 2013-10-21T13:16:52.650 回答