解決linux找不到動態庫的問題

2021-09-23 15:35:46 字數 1024 閱讀 7263

動態庫即共享庫,說到linux找不到動態庫的問題,首先要了解動態庫的特點:

動態庫把對一些庫函式的鏈結載入推遲到程式執行的時期。

可以實現程序之間的資源共享。(因此動態庫也稱為共享庫)

將一些程式公升級變得簡單。

甚至可以真正做到鏈結載入完全由程式設計師在程式**中控制(顯示呼叫)。

由上述中的第1點可知,動態庫並不是像靜態庫那樣將庫檔案以二進位制形式打包到程式中,而是在程式執行到需要呼叫對應庫函式這個時機的時候動態載入動態庫,這時候系統只知道動態庫的名字,而不知道絕對路徑,此時就需要系統動態載入器(dynamic linker/loader);對於elf的可執行程式,是由ld-linux.so來完成的,它先後搜尋elf檔案的dt_rpath段(不可控) =》 環境變數ld_library_path =》 /etc/ld.so.cache檔案列表 =》 /lib/和/usr/lib 目錄找到庫檔案後載入記憶體。

那麼我們需要做的就是將動態庫所在目錄的絕對路徑加到動態載入器搜尋序的任一次序中,下面說具體實現方法:

方法2:將動態庫所在目錄的絕對路徑新增到系統環境變數中2.1、將動態庫所在目錄的絕對路徑臨時新增到環境變數中(隨終端關閉失效)

export ld_library_path=$ld_library_path:/home/chiliast/homework/day03/shared/lib

export ld_library_path=$ld_library_path:/home/chiliast/homework/day03/shared/lib

source ~/.bashrc 或 . ~/.bashrc使配置生效

export ld_library_path=$ld_library_path:/home/chiliast/homework/day03/shared/lib

source /etc/profile 或 ./etc/profile使配置生效

找不到動態庫

找到 so檔案 這裡拿libevent.so為例 sudo find usr local name libevent.so 放到 usr local 或者是 lib 將 so放到環境變數中 1.將動態庫所在目錄的絕對路徑臨時新增到環境變數中 隨終端關閉失效 export ld library pat...

Linux 動態鏈結庫找不到的解決辦法

今天玩乙個遊戲叫supertuxkart,是一款卡丁車遊戲。執行run game.sh指令碼時提示libidn.so.11,libcurl gnutls.so找不到。首先locate libcurl gnutls.so,發現找到了該檔案,不是沒有安裝的問題 然後在 etc ld.so.cache中g...

linux找不到動態鏈結庫 so檔案的解決方法

如果使用自己手動生成的動態鏈結庫.so檔案,但是這個.so檔案,沒有加入庫檔案搜尋路勁中,程式執行時可能會出現找不到動態鏈結庫的情形。其中的libjson linux gcc 4.6 libmt.so cannot found。解決這個問題 1 在系統中查詢這個檔案 當然要保證系統中已經有這個.so...