linux 下程式執行時出現的 error while loading shared libraries
Linux中error while loadin
預設情況下,編譯器只會使用/lib和/usr/lib這兩個目錄下的庫檔案,通常通過原始碼包進行安裝時,如果不指定--prefix,會將庫安裝在/usr/local/lib目錄下;當執行程式需要連結動態庫時,提示找不到相關的.so庫,會報錯。也就是說,/usr/local/lib目錄不在系統預設的庫搜尋目錄中,需要將目錄加進去。
1、首先開啟/etc/ld.so.conf檔案
2、加入動態庫檔案所在的目錄:執行vi /etc/ld.so.conf,在"include ld.so.conf.d/*.conf"下方增加"/usr/local/lib"。
3、儲存後,在命令列終端執行:/sbin/ldconfig -v;其作用是將檔案/etc/ld.so.conf列出的路徑下的庫檔案快取到/etc/ld.so.cache以供使用,因此當安裝完一些庫檔案,或者修改/etc/ld.so.conf增加了庫的新搜尋路徑,需要執行一下ldconfig,使所有的庫檔案都被快取到檔案/etc/ld.so.cache中,如果沒做,可能會找不到剛安裝的庫。
經過以上三個步驟,"error while loading shared libraries"的問題通常情況下就可以解決了。
如果執行應用程式時,還是提示以上錯誤,那就得確認一下是不是當前使用者在庫目錄下是不是沒有可讀的許可權。像我遇到的問題就是,從別的機子拷貝了一些.so動態庫,然後用root許可權放到了/usr/local/lib
其實,對於由普通使用者自己編譯生成的.so庫檔案,比較好做好是將這些.so庫檔案的路徑用export指令加入到~/.bash_profile中的LD_LIBRARY_PATH變數中,LD_LIBRARY_PATH是程式執行需要連結.so庫時會去查詢的一個目錄,~/.bash_profile