1. 出現error while loading shared libraries的原因
1-1. 不存在該共享庫,如果是這個原因,需要下載或者編譯該共享庫先了。
1-2. 存在該共享庫,但是找不到或者共享庫的不對
如果是第二種情況,請繼續往下看。
2.原因分析
系統查看共享庫的過程:首先查找 /etc/ld.so.cache文件,如果找不到就查找環境變量里的LD_LIBRARY_PATH的值,如果找到了就到對應的目錄加載該共享庫,如果找不到就報error while loading shared libraries錯誤了;
而/etc/ld.so.cache文件的內容是根據
/lib目錄、
/usr/lib目錄、
/etc/ld.so.conf(/etc/ld.so.conf文件包含/etc/ld.so.conf.d下所有conf文件)文件、
這三個的內容生成的。
3.解決方法
方法1:將你的共享庫copy到/lib目錄或者/usr/lib目錄下,然后執行sudo ldconfig 來重新裝載/etc/ld.so.cache文件
方法2:在ld.so.conf.d目錄下創建一個conf文件(比如sudo vi test.conf),內容就是你共享庫的路徑,然后執行sudo ldconfig 來重新裝載/etc/ld.so.cache文件
方法3:創建符號連接到/lib目錄或者/usr/lib目錄下,然后執行sudo ldconfig 來重新裝載/etc/ld.so.cache文件。
舉例說明:ln -s /home/test/xx.so /usr/lib/xx.so //如果是因為版本號不對,可以符號連接改為需要的版本號
方法4:就是在環境變量添加LD_LIBRARY_PATH的值了,也就是在當前用戶目錄下的 附:我就是使用方法2,網上看了很多人在/etc/ld.so.conf文件里面直接添加共享庫的路徑,這樣也一樣,但是為什么不是在ld.so.conf.d目錄下創建一個conf文件呢?因為/etc/ld.so.conf文件實際上就是包含ld.so.conf.d目錄下的所有conf文件。並且感覺這樣管理好多了。