让Boost asio工作

时间:2013-04-12 21:27:46

标签: c++ boost boost-asio

我正在尝试将Boost asio库用于套接字。

我使用自制程序brew install boost

安装了boost

构建完成后,我尝试the tutorial在boost的网站上创建服务器。

我所做的就是将该代码粘贴到名为main.cc

的文件中

当我尝试编译g++ main.cc时,我收到此错误:

Undefined symbols for architecture x86_64:
"boost::system::system_category()", referenced from:
  __static_initialization_and_destruction_0(int, int)in ccTbzxpk.o
  boost::asio::error::get_system_category()    in ccTbzxpk.o
  boost::system::error_code::error_code()in ccTbzxpk.o
"boost::system::generic_category()", referenced from:
  __static_initialization_and_destruction_0(int, int)in ccTbzxpk.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

出了什么问题?

1 个答案:

答案 0 :(得分:3)

那些是linker errors。如果您阅读docs

  

必须提供以下库才能链接程序   使用Boost.Asio

     

Boost.System用于boost :: system :: error_code和   boost :: system :: system_error类。   如果你使用Boost.Regex(可选)   任何带有a的read_until()或async_read_until()重载   boost :: regex参数。   如果你使用Boost.Asio的SSL,OpenSSL(可选)   支持。

     

此外,一些示例还需要Boost.Thread,   Boost.Date_Time或Boost.Serialization库。

现在,您发布的错误都说:boost::system,这意味着您需要像这样链接(假设一切都是默认值): g++ main.cc -lboost_system

请阅读What do 'statically linked' and 'dynamically linked' mean?以获取有关链接的详细信息。