【问题标题】:Cannot Statically link MySQL C++ Connector无法静态链接 MySQL C++ 连接器
【发布时间】:2013-10-21 13:08:29
【问题描述】:

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

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

如何静态链接这个库?

【问题讨论】:

    标签: c++ mysql linker g++


    【解决方案1】:

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

    这些未定义的函数位于 C MySQL API 中,所以你应该添加 -lmysqlclient

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 2013-02-15
      • 1970-01-01
      相关资源
      最近更新 更多