c++ - 编译期间链接到 boost 库失败

标签 c++ boost boost-asio dynamic-linking

我有一个非常简单的示例程序,我正在尝试编译它,但出现链接错误。

程序

int main()
{
  boost::asio::io_service io;

  boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
  t.wait();

  std::cout << "Hello, world!\n";

  return 0;
}

编译

我正在使用以下编译选项:

g++ -L/usr/lib -lboost_system -lboost_filesystem -lboost_thread -pthread -I/usr/include timer.cpp -o timer

输出

我已检查动态库是否存在并且位于 -L 路径中。以下是我遇到的错误:

/tmp/cc3hJrVk.o: In function `__static_initialization_and_destruction_0(int, int)':
timer.cpp:(.text+0xf0): undefined reference to `boost::system::generic_category()'
timer.cpp:(.text+0xfc): undefined reference to `boost::system::generic_category()'
timer.cpp:(.text+0x108): undefined reference to `boost::system::system_category()'
/tmp/cc3hJrVk.o: In function `boost::system::error_code::error_code()':
timer.cpp:(.text._ZN5boost6system10error_codeC2Ev[_ZN5boost6system10error_codeC5Ev]+0x17): undefined reference to `boost::system::system_category()'
/tmp/cc3hJrVk.o: In function `boost::asio::error::get_system_category()':
timer.cpp:(.text._ZN5boost4asio5error19get_system_categoryEv[boost::asio::error::get_system_category()]+0x5): undefined reference to `boost::system::system_category()'
collect2: ld returned 1 exit status

正如您所看到的,如果您不正确地链接到 libboost_system,就会出现这些错误。我已经测试了两个单独安装的 boost,但我已经束手无策了。

预先感谢您的帮助!

最佳答案

您需要在命令末尾的文件名后面移动所有库。

另外:Boost::System 必须与普通的 boost 库分开构建。因此,如果您没有单独构建它们,它们就不会存在。

请参阅此处的第 3 节:

http://www.boost.org/doc/libs/1_49_0/more/getting_started/unix-variants.html

关于c++ - 编译期间链接到 boost 库失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10135695/

相关文章:

c++ - 是否允许将 unordered_map 转换到 map 上?

c++ - boost::asio 内部线程

C++:你会选择 boost::date_time 还是 icu::date/time 库?

c++ - 在没有回调的情况下 boost asio 非阻塞 IO

c++ - 发送 POST 请求

c++ - 为什么 ASIO 套接字 open() 会失败?

c++ - 在类型特征中,为什么人们使用 enum 而不是 static const 作为值?

python - fatal error C1083 : Cannot open include file: 'atlbase.h' Pyinsane package

C++ 隐式函数调用

c++ - 多项式ADT构造函数和删除