天天看點

Linux C程式設計問題:"error while loading shared libraries: xxx.so.x"

在Linux環境下運作可執行檔案報錯:

error while loading shared libraries: libxxx.so: cannot open shared object file: No such file or directory
           

程式想加載動态庫但是找不到,原因有以下兩種情況:

  1. 共享庫确實沒安裝,或版本不對
  2. 共享庫已安裝,但是預設搜尋路徑中找不到

對第一種情況,隻需安裝對應的共享庫即可。

對第二種情況,則需要配置共享庫搜尋路徑:

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指令

繼續閱讀