ubuntu下cannot find lib....so.x 尋找動態連結庫
預設從/lib 、 /usr/lib 以及配置檔案/etc/ld.so.conf內所列的目錄下載入.so檔案,
進而創建出動態裝入程式(ld.so)所需的連線和快取檔案。
快取檔案預設為/etc/ld.so.cache,該檔案儲存已排好序的動態連結庫名字列表。
ldconfig通常在系統啟動時執行,而當用戶安裝了一個新的動態連結庫時,就需要將so檔案的地址寫入/etc/ld.so.conf,就需要手工執行ldconfig這個命令。
1.可以使用sudo find / -name 檔名查詢地址,
2.然後sudo gedit /etc/ld.so.conf,將地址新增在最後一行
3.使修改生效 sudo ldconfig
可以使用ldd filename檢視可執行檔案所依賴的動態連結庫
ldconfig需要注意的地方:
1、往/lib和/usr/lib裡面加東西,是不用修改/etc/ld.so.conf檔案的,但是新增完後需要呼叫下ldconfig,不然新增的library會找不到。
2、如果新增的library不在/lib和/usr/lib裡面的話,就一定要修改/etc/ld.so.conf檔案,往該檔案追加library所在的路徑,然後也需要重新呼叫下ldconfig命令。比如在安裝MySQL的時候,其庫檔案/usr/local/mysql/lib,就需要追加到/etc/ld.so.conf檔案中。命令如下:
# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf
# ldconfig -v | grep mysql
3、如果新增的library不在/lib或/usr/lib下,但是卻沒有許可權操作寫/etc/ld.so.conf檔案的話,這時就需要往export裡寫一個全域性變數LD_LIBRARY_PATH,就可以了。
若修改變數LD_LIBRARY_PATH無效,則修改變數LIBRARY_PATH
參考部落格:
https://blog.csdn.net/chenzixun0/article/details/56278632/