2012-06-21 27 views
7

我已經安裝libboost-devapt-get,它被放置在/usr/lib我安裝了libboost,但無法鏈接到它

/usr/lib$ ls | grep boost 
libboost_filesystem.so.1.46.1 
libboost_iostreams.so.1.46.1 
libboost_serialization.so.1.46.1 
libboost_system.so.1.46.1 
libboost_thread.so.1.46.1 
libboost_wserialization.so.1.46.1 

但是,當我試圖編譯使用boost_thread我還是有一個錯誤。

$ g++ tcp_echo.cpp -o tcp_echo -L/usr/lib -llibboost_thread 
/usr/bin/ld: cannot find -lboost_thread 
collect2: ld returned 1 exit status 
$ g++ tcp_echo.cpp -o tcp_echo -L/usr/lib -lboost_thread 
/usr/bin/ld: cannot find -lboost_thread 
collect2: ld returned 1 exit status 

什麼是安裝和鏈接到libboost的正確方法?

+3

您不需要'-L/usr/lib',它會自動添加到庫搜索路徑中。 –

+2

您是否在安裝後嘗試過運行'ldconfig'(以root身份)? –

+1

@JoachimPileborg ldconfig應該由apt運行,所以他應該很好。特別是如果使用'-L'的話。 – robert

回答

11

我注意到的一件事是,你沒有libboost_thread.so。您有 版本爲1.46.1的文件,但通常庫會創建帶有未裝飾名稱的版本化副本的符號鏈接 。這可能不是 ,但它是我注意到的一件事。 (這一般是由 安裝完成。) - Omaha

我認爲這是一點。這意味着我安裝了libboost錯誤的方式。事實上,我只安裝libboost-dev

sudo apt-get install libboost-dev 

但我應該做的是:

sudo apt-get install libboost-dev libboost1.46-doc libboost-date-time1.46-dev ibboost-filesystem1.46-dev libboost-graph1.46-dev libboost-iostreams1.46-dev libboost-math1.46-dev libboost-program-options1.46-dev libboost-python1.46-dev libboost-random1.46-dev libboost-regex1.46-dev libboost-serialization1.46-dev libboost-signals1.46-dev libboost-system1.46-dev libboost-test1.46-dev libboost-thread1.46-dev libboost-wave1.46-dev 

(或者說,在我的具體情況,安裝libboost-system1.46-dev libboost-thread1.46-dev至少)

而且一旦你安裝他們正確,應該有.a.so/usr/lib

/usr/lib$ ls | grep boost 
libboost_date_time.a 
libboost_date_time-mt.a 
libboost_date_time-mt.so 
libboost_date_time.so 
libboost_date_time.so.1.46.1 
libboost_filesystem.a 
libboost_filesystem-mt.a 
... and so on ... 
+0

它曾經是,Ubuntu有元包libboost-dev-all來安裝所有這些。但是,我現在似乎無法找到它。這裏有一個命令行可能有幫助: 'sudo apt-get install''apt-cache search libboost | grep - -dev | grep -v'[12] \。[0-9]'| awk'{print $ 1; }' –

1

評論框搞砸了這個建議的引用,所以我發佈它作爲一個答案得到正確的引用。

它曾經是,Ubuntu有元軟件包libboost-dev-all來安裝所有這些。但是,我現在似乎無法找到它。這裏有一個命令行,可能會幫助:

sudo apt-get install `apt-cache search libboost | \ 
    grep -- -dev | \ 
    grep -v '[12]\.[0-9]' | \ 
    awk '{ print $1; }'` 

(從https://github.com/imvu-open/istatd/文件install-boost-dev.sh兩者)

+0

爲他人 - 我有OP的問題,這個命令的確立即解決了它。 Ubuntu 15.10。順便提一下,'libboost-dev'似乎並不意味着缺少'libboost-dev-all' –

2

在Ubuntu的16.04,包被命名爲:libboost-ALL-DEV(不libboost- dev-all)

相關問題