Software-Installation

如何在 CentOS 中安裝自定義的 boost 版本?

  • October 12, 2017

我正在嘗試從 CentOS 中的原始碼編譯和安裝boost 1.54。

文件非常簡單明了,網際網路上有很多可用的教程 ( 1 ) ( 2 ) ( 3 )。這就是我所做的:

wget http://sourceforge.net/projects/boost/files/boost/1.54.0/boost_1_54_0.tar.gz
tar -xzvf boost_1_54_0.tar.gz
cd boost_1_54_0
./bootstrap.sh --prefix=/usr/local
./b2 install --with=all

這是正確編譯和安裝 boost 的/usr/local/lib,一切看起來都很好。

現在我編譯了其他需要提升使用的軟體,gcc一切正常。據我了解,只要gcc找到所需的庫,一切都應該沒問題。

但現在的問題是:如果我執行我編譯的二進製文件,我會收到以下錯誤:

./myProgram
 ./myProgramm: error while loading shared libraries: libboost_system.so.1.54.0: cannot open shared object file: No such file or directory

為什麼找不到庫?

另外我試過:

ldconfig
locate boost
 [...]

但是找不到boost庫。我已經手動查找了路徑,它是:

/usr/local/lib/libboost_system.so.1.54.0

我也嘗試創建符號連結,/usr/lib但這也不能解決這個問題。

有任何想法嗎?我能做些什麼?

您必須-Wl,-R/usr/local/libLDFLAGS編譯程序時添加。

-R是一個連結器選項(用於指定執行時連結器路徑) --Wl指示gcc將其傳遞給ld.

對於共享庫,您必須確保它們在編譯期間執行時被連結器找到(參見 flags-L-R)。

您可以使用

$ ldd myProgramm

驗證執行時連結器路徑是否設置正確,即它是否可以在程序啟動時找到所需的共享庫/它將載入哪些共享庫。

引用自:https://unix.stackexchange.com/questions/98918