在Linux環境下運作可執行檔案報錯:
error while loading shared libraries: libxxx.so: cannot open shared object file: No such file or directory
程式想加載動态庫但是找不到,原因有以下兩種情況:
- 共享庫确實沒安裝,或版本不對
- 共享庫已安裝,但是預設搜尋路徑中找不到
對第一種情況,隻需安裝對應的共享庫即可。
對第二種情況,則需要配置共享庫搜尋路徑:
1、如果共享庫檔案安裝到了/lib或/usr/lib目錄下, 那麼需執行一下ldconfig指令,該指令參考 ldconfig指令
2、如果共享庫檔案安裝到了/usr/local/lib或其它"非/lib或/usr/lib"目錄下, 那麼在執行ldconfig指令前, 還要把新共享庫目錄加入到共享庫配置檔案/etc/ld.so.conf中, 如下:
# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig
3、若不想在/etc/ld.so.conf中加路徑(或者是沒有權限加路徑). 那可以export一個全局變量LD_LIBRARY_PATH, 然後運作程式的時候就會去這個目錄中找共享庫
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
參考:
"error while loading shared libraries: xxx.so.x" 錯誤的原因和解決辦法
如何正确使用環境變量LD_LIBRARY_PATH
LIBRARY_PATH和LD_LIBRARY_PATH環境變量的差別
ldconfig指令