Software-Installation
如何在 CentOS 中安裝自定義的 boost 版本?
我正在嘗試從 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/lib
在LDFLAGS
編譯程序時添加。
-R
是一個連結器選項(用於指定執行時連結器路徑) --Wl
指示gcc
將其傳遞給ld
.對於共享庫,您必須確保它們在編譯期間和執行時被連結器找到(參見 flags
-L
和-R
)。您可以使用
$ ldd myProgramm
驗證執行時連結器路徑是否設置正確,即它是否可以在程序啟動時找到所需的共享庫/它將載入哪些共享庫。