无法静态链接MySQL C ++连接器

时间:2013-10-21 13:08:29

标签: c++ mysql linker g++

我正在尝试使用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

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

如何静态链接此库?

1 个答案:

答案 0 :(得分:4)

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

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