2013-04-12 38 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 /'。 –