首頁  >  文章  >  運維  >  linux動態庫找不到怎麼辦

linux動態庫找不到怎麼辦

藏色散人
藏色散人原創
2020-05-25 10:13:082999瀏覽

linux動態庫找不到怎麼辦

linux動態函式庫找不到怎麼辦?

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

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

推薦:《linux教學

● 動態函式庫把一些函式庫函數的連結載入延後到程式運行的時期。

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

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

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

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

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

方法1:拷貝自己製作的共享庫到/lib或/usr/lib,不建議

方法2:將動態庫所在目錄的絕對路徑加入系統環境變數

2.1、將動態庫所在目錄的絕對路徑暫時加入環境變數(隨終端關閉失效)

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

2.2、將動態庫所在目錄的絕對路徑設定至~/.bashrc或/etc/profile中(永久生效)

使用者層級:追加庫路徑到~/.bashrc檔案尾

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

source ~/.bashrc 或. ~/.bashrc使設定生效

##系統層級:追加庫路徑到/etc/profile檔案尾

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

source /etc/profile 或./etc/profile使設定生效

方法3:將動態庫所在目錄的絕對路徑新增至/ etc/ld.so.cache檔案中(2步驟實作)

編輯/etc/ld.so.conf文件,加入庫檔案所在目錄的路徑

執行ldconfig (需要super user權限),該指令會重建/etc/ld.so.cache檔

以上是linux動態庫找不到怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn