三種實用方法解決Linux動態庫依賴問題
概述
平時在編譯安裝某個軟件時,如果自定義了一些安裝目錄,安裝后有可能會提示找不到動態庫。下面介紹下思路和三個解決方法。
思路
一般來說,通過make命令已經將程序依賴的動態庫編譯出來了,通過make install命令已經將動態庫安裝到系統的某個路徑下。找沒找到動態庫就看這個路徑是否包含在系統默認搜索動態庫的路徑中,如果不在,那么就會提示找不到動態庫。以下三種方法,就是根據前面的分析來解決的。
方法一:修改LD_LIBRARY_PATH環境變量
特點:這種方法主要處理臨時的動態庫加載,LD_LIBRARY_PATH環境變量修改后,只能是對當前的用戶生效。
LD_LIBRARY_PATH的作用:這個環境變量用于在程序加載運行期間查找動態鏈接庫時指定除了系統默認路徑之外的其他路徑,注意,LD_LIBRARY_PATH中指定的路徑會在系統默認路徑之前進行查找。
具體步驟:
1、找到動態庫所在路徑:sudo find / -name "[動態庫名字]"
2、打開~/.bash_profile文件
3、在該文件***一趟添加:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:[動態庫所在的絕對路徑]
4、source ~/.bash_profile

方法二:修改/etc/ld.so.conf配置文件
特點:對所有用戶生效。不是每個操作系統都有這個配置文件,就Ubuntu系統有。
/etc/ld.so.conf的作用:記錄了程序加載運行期間查找動態鏈接庫時的路徑。
具體步驟:
1、找到動態庫所在路徑:sudo find / -name "[動態庫名字]"
2、打開/etc/ld.so.conf文件:sudo vi /etc/ld.so.conf
3、在***一行添加動態庫的絕對路徑
4、重新加載/etc/ld.so.conf文件:sudo ldconfig -v

方法三:創建動態庫的軟連接(推薦)
特點:讓所有用戶生效;并且通用,只要是Linux類型的操作系統,都會去/usr/lib目錄下去找動態庫。
具體步驟:
1、找到動態庫所在路徑:sudo find / -name "[動態庫名字]"
2、創建動態庫軟連接:ln -s [動態庫] [待創建的軟鏈接]
注意:
1、創建軟連接的時候要用絕對路徑,如果用相對路徑,會導致只在當前路徑有效,其他路徑這個軟連接就找不到了。
2、不建議用cp的方式代替ln -s的方式。原因:當動態庫升級的時候,有可能導致動態庫版本不一致,還是鏈接的舊版本。

上面主要講三個創建動態庫的方法,其中ln -s方式是比較常用的,大家有空可以測試下。