2013-04-12 98 views
0

我正在尝试使用Boost asio库来插座。让Boost asio工作

我用自制brew install boost

安装升压它建成后,我试图the tutorial创建于提升网站的服务器。

我所做的只是粘贴代码到一个名为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 

到底哪里出问题了?

回答

2

这些是linker errors。如果你读了docs

The following libraries must be available in order to link programs that use Boost.Asio:

Boost.System for the boost::system::error_code and boost::system::system_error classes. Boost.Regex (optional) if you use any of the read_until() or async_read_until() overloads that take a boost::regex parameter. OpenSSL (optional) if you use Boost.Asio's SSL support.

Furthermore, some of the examples also require the Boost.Thread, Boost.Date_Time or Boost.Serialization libraries.

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

请为阅读What do 'statically linked' and 'dynamically linked' mean?有关链接的深入信息。

+0

嗯当链接像你建议我得到'ld:库找不到-lboost_system' – Deekor

+0

你必须添加库路径以及-L。 – ppl

+0

@Deekor:正如已经提到的ppl在'-lboost_system'之前添加库路径,类似'-L/home/boost/lib /'。 –