【问题标题】:Boost Libraries Linking IssuesBoost 库链接问题
【发布时间】:2012-02-17 08:47:37
【问题描述】:

我在与 boost 库链接时遇到了一些问题。我正在尝试执行simple timer program

但是当我执行程序时出现以下错误

~/boost_1_48_0/boost/asio/detail/impl/posix_tss_ptr.ipp:34: undefined reference to `pthread_key_create'
./timer.o: In function `~posix_tss_ptr': /~/boost_1_48_0/boost/asio/detail/posix_tss_ptr.hpp:48: undefined reference to `pthread_key_delete' 
./timer.o: In function `boost::asio::detail::posix_tss_ptr<boost::asio::detail::call_stack<boost::asio::detail::task_io_service, boost::asio::detail::task_io_service::thread_info>::context>::operator boost::asio::detail::call_stack<boost::asio::detail::task_io_service, boost::asio::detail::task_io_service::thread_info>::context*() const': ~/boost_1_48_0/boost/asio/detail/posix_tss_ptr.hpp:54: undefined reference to `pthread_getspecific'
./timer.o: In function `~posix_tss_ptr': ~/boost_1_48_0/boost/asio/detail/posix_tss_ptr.hpp:48: undefined reference to `pthread_key_delete' collect2: ld returned 1 exit status

我已经加入了_I ~/boost_1_48_0/ -L ~/boost_1_48_0/stage/lib -lboost-system

对此有什么快速的指导吗?

【问题讨论】:

  • 如果你链接到-lboost_thread会发生什么?

标签: c++ boost boost-asio ubuntu-11.10


【解决方案1】:

您还记得指定-pthread 吗?来自 GCC 手册页:

   -pthread
       Add support for multithreading using the POSIX threads library.
       This option sets flags for both the preprocessor and linker.

对于使用 POSIX 线程的代码是必需的。

【讨论】:

  • 显然假设您首先使用的是 GCC。
  • 谢谢 reko_t,我已经加入了,它运行良好。但是,我现在面临运行时错误,说 libboost_system.so.1.48.0: cannot open shared object file: No such file or directory。它实际上存在于 /stage/lib 目录中。我错过了一些要包括在某处的东西。我正在使用 Eclipse CDT 并尝试在那里运行。
  • 您的系统必须能够从给定路径集中找到共享库。如果您的共享库位于非标准目录中,您可以将该目录包含在LD_LIBRARY_PATH 环境变量中。执行:export LD_LIBRARY_PATH="/path/to/stage/lib:$LD_LIBRARY_PATH",然后重试。
  • 又不走运了,我的 LD_LIBRARY_PATH 没有价值,现在我正确设置了舞台路径,但它仍然抛出相同的错误。有什么选择吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
  • 2017-11-17
  • 2018-12-04
  • 2013-09-23
  • 1970-01-01
  • 2012-05-03
相关资源
最近更新 更多