2012-06-20 174 views
0

我在最新版本的Ubuntu上通過sudo apt-get install libboost-all-dev安裝了Boost。現在我想編譯一個使用Boost.Serialization庫的項目,其中needs to be linked編譯Boost鏈接庫(Ubuntu)

我已經試過以下的許多變體,都沒有成功:

gcc -I /usr/lib code.cpp -o compiled /usr/lib/libboost_serialization.a 

gcc -I /usr/lib code.cpp -o compiled -l libboost_serialization 

的錯誤信息是:

error: ‘split_member’ is not a member of ‘boost::serialization 

`

什麼我錯過了嗎?

+1

這不是鏈接器錯誤。這是一個編譯錯誤。另外,你的問題不是編譯boost庫,而是編譯使用它們的代碼。 – Cubic

回答

1

您在編譯代碼時遇到麻煩,而不是鏈接。在那個階段,它與圖書館無關。在這一點上,你必須與某些東西聯繫的事實是無關緊要的。

確保您直接或間接包含boost/serialization/split_member.hpp,並首先編譯您的代碼。

在旁註中,-I標誌用於指定包含文件而不是庫的路徑。對於圖書館,請使用-L。但是,如果您已經從apt安裝了Boost,那麼它應該已經在路徑中,因此不需要額外的-I-L。當您指定-l時,您必須從庫名稱的開頭髮出lib,並且不在標誌與其參數之間放置空格。假設工作的代碼,這樣的事情應該做的:

g++ code.cpp -o compiled -lboost_serialization 

我也建議你通過-Wall標誌,使編譯器更詳細,提醒你你的代碼中可能出現的錯誤。

+0

在我的文件頂部添加'#include '修復了這個問題。謝謝。 –