Linux下error while loading shared libraries的解決方法


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文件。並且感覺這樣管理好多了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM