【问题标题】:Building Boost_1_55_0's example asynchronous TCP daytime server构建 Boost_1_55_0 的示例异步 TCP 日间服务器
【发布时间】:2014-04-06 23:42:40
【问题描述】:

我正在尝试构建在此链接上找到的 Boost 异步 TCP 日间服务器示例: http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/tutorial/tutdaytime3/src.html

这是我试图构建示例的内容:

g++ -o server server.cpp -I ~/boost/include -L~/boost/lib -lboost_system

这是我得到的错误:

 g++ -o server server.cpp -I ~/boost/include -L~/boost/lib -lboost_system
/tmp/ccF38gvh.o: In function `__static_initialization_and_destruction_0(int, int)':
server.cpp:(.text+0x221): undefined reference to `boost::system::generic_category()'
server.cpp:(.text+0x22d): undefined reference to `boost::system::generic_category()'
server.cpp:(.text+0x239): undefined reference to `boost::system::system_category()'
/tmp/ccF38gvh.o: In function `boost::system::error_code::error_code()':
server.cpp:(.text._ZN5boost6system10error_codeC2Ev[_ZN5boost6system10error_codeC5Ev]+0x17): undefined reference to `boost::system::system_category()'
/tmp/ccF38gvh.o: In function `boost::asio::error::get_system_category()':
server.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
make: *** [all] Error 1

我需要添加什么才能成功构建?

【问题讨论】:

  • 问题是什么?
  • 对不起,我在完成之前不小心按了回车并发送了这个
  • 这是一个浏览器错误,如果“Enter”提交帖子:)

标签: c++ sockets boost tcp


【解决方案1】:

我很确定你的命令行是不同的。

特别是,您是否在库/之后/列出了源?

具体

g++ -o server -I "$HOME/boost/include" -L"$HOME/boost/lib" -lboost_system server.cpp 

不会工作,并且

g++ -o server server.cpp -I "$HOME/boost/include" -L"$HOME/boost/lib" -lboost_system

应该可以。

除此之外,另请参阅c++ files to include for boost : asio。教程的 jam 文件使用 -lboost_system -lboost_thread -DBOOST_ALL_NO_LIB=1 构建所有内容(这可能是矫枉过正)

更新还发现了这个How to compile boost async_client.cpp

【讨论】:

  • 我移动了“server.cpp”的位置,但它仍然无法正常工作。我会看看你提供的链接。谢谢
  • 我试过使用:g++ -o server -I ~/boost/include -L~/boost/lib -lboost_system -lboost_thread -DBOOST_ALL_NO_LIB=1 server.cpp 现在我得到了一个不同的错误: /usr/bin/ld: 警告:/usr/local/lib/libboost_thread.so 需要的 libboost_system.so.1.53.0,可能与 libboost_system.so.5 冲突
  • 不是错误。只需确保您的 LD_LIBRARY_PATH 在运行时找到所需的版本。您还可以查看-Wl,rpath 选项。 (链接器警告您,您的系统 LD_LIBRARY_PATH 包含同一库的冲突版本)
  • 所以我可以使用 (-Wl, rpath) 选项来指定我想要的版本?
  • 您可以使用它来避免手动覆盖 LD_LIBRARY_PATH。当然,将其烘焙到二进制文件中有些限制(特别是因为如果它指的是特定于机器的路径)。只是给你选择
猜你喜欢
  • 2014-02-21
  • 2013-04-06
  • 2010-10-22
  • 1970-01-01
  • 2014-12-22
  • 2019-01-04
  • 1970-01-01
  • 2016-08-31
相关资源
最近更新 更多