2009-12-30 116 views
3

我在ubuntu 9.10的'/ media/data/bin'中編譯並安裝了我的boost庫。 我已經設置了INCLUDE_PATH,LIBRARY_PATH ENV:在ubuntu上設置boost庫的問題

$ echo $INCLUDE_PATH 
/media/data/bin/boost/include: 
$ echo $LIBRARY_PATH 
/media/data/bin/boost/lib: 

但是,當我編譯ASIO例子中,我得到以下錯誤: $ G ++ blocking_tcp_echo_server.cpp

blocking_tcp_echo_server.cpp:13:26: error: boost/bind.hpp: No such file or directory 
blocking_tcp_echo_server.cpp:14:31: error: boost/smart_ptr.hpp: No such file or directory 
blocking_tcp_echo_server.cpp:15:26: error: boost/asio.hpp: No such file or directory 
blocking_tcp_echo_server.cpp:16:28: error: boost/thread.hpp: No such file or directory 
blocking_tcp_echo_server.cpp:18: error: ‘boost’ has not been declared 
blocking_tcp_echo_server.cpp:22: error: ‘boost’ has not been declared 
blocking_tcp_echo_server.cpp:22: error: expected initializer before ‘<’ token 
blocking_tcp_echo_server.cpp:24: error: variable or field ‘session’ declared void 
blocking_tcp_echo_server.cpp:24: error: ‘socket_ptr’ was not declared in this scope 

回答

10

有什麼不對

sudo apt-get install libboost-dev 

之後,你不需要設置任何-I-L標誌。如果你需要Boost 1.40,你仍然可以重建當前的Debian unstable軟件包。

+0

我沒有使用這個,因爲它會提升我的主驅動器,我用盡了空間。所以我編譯/安裝我的外部硬盤驅動器(它比我的主驅動器有更多的空間)。 – n179911 2009-12-31 01:04:52

0

嘗試C_INCLUDE_PATH或使用 - 我的編譯器選項

BTW,使用LD_LIBRARY_PATH幫助查找圖書館

+0

我已經設置了C_INCLUDE_PATH和CPLUS_PATH,但我仍然得到鏈接錯誤: :錯誤:取消定義d引用'typeinfo for boost :: detail :: thread_data_base' 我已經設置了$ echo $ LD_LIBRARY_PATH /media/data/bin/boost/lib: – n179911 2009-12-31 01:01:10

+0

您必須指定庫鏈接到「-lXXX」標誌,確保你沒有空間。當然,你將不得不將XXX替換爲庫的名稱,減去「lib」前綴並且沒有後綴。我不知道確切的庫名稱,您可能需要閱讀文檔。 LD變量指定庫的搜索路徑,但不指定要鏈接到的庫。 – Anycorn 2009-12-31 01:12:24

+0

你知道什麼,只是嘗試添加-lboost到你的編譯/鏈接命令 – Anycorn 2009-12-31 01:13:46

0

檢查頭實際上有:

/media/data/bin/boost/include/boost/bind.hpp

同時嘗試使用-I /媒體/數據/斌/升壓/包括而不是env變量(注意-I後沒有空格)。

3

爲了節省大家的時間,這裏是我給這個問題在其他地方的答案: http://permalink.gmane.org/gmane.comp.lib.boost.user/54626

更新2016年2月11日:有必要直接指定選項:

g++ -I<prefix>/include -L <prefix>/lib 

或使用正確的變量:

export CPLUS_INCLUDE_PATH=<prefix>/include 
export LIBRARY_PATH=<prefix>/lib 
+0

請在這裏添加所需的部分答案,而不是放入鏈接 – 2016-02-11 05:55:52

+0

這是2009年的問題,與Ubuntu 9.10相關。許多事情已經發生了變化,尤其是Boost構建過程打印,最後還介紹瞭如何使用已安裝的Boost。我可以建議,如果你現在有問題,你會發佈一個單獨的詳細問題?問題和解決方案可能與此問題中的問題完全不同。 – 2016-02-11 08:25:09