溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何解決linux找不到動(dòng)態(tài)庫的問題?

發(fā)布時(shí)間:2020-05-25 14:36:24 來源:億速云 閱讀:217 作者:鴿子 欄目:建站服務(wù)器

動(dòng)態(tài)庫即共享庫,說到linux找不到動(dòng)態(tài)庫的問題,首先要了解動(dòng)態(tài)庫的特點(diǎn):

● 動(dòng)態(tài)庫把對(duì)一些庫函數(shù)的鏈接載入推遲到程序運(yùn)行的時(shí)期。

● 可以實(shí)現(xiàn)進(jìn)程之間的資源共享。(因此動(dòng)態(tài)庫也稱為共享庫)

● 將一些程序升級(jí)變得簡(jiǎn)單。

● 甚至可以真正做到鏈接載入完全由程序員在程序代碼中控制(顯示調(diào)用)。

由上述中的第1點(diǎn)可知,動(dòng)態(tài)庫并不是像靜態(tài)庫那樣將庫文件以二進(jìn)制形式打包到程序中,而是在程序運(yùn)行到需要調(diào)用對(duì)應(yīng)庫函數(shù)這個(gè)時(shí)機(jī)的時(shí)候動(dòng)態(tài)加載動(dòng)態(tài)庫,這時(shí)候系統(tǒng)只知道動(dòng)態(tài)庫的名字,而不知道絕對(duì)路徑,此時(shí)就需要系統(tǒng)動(dòng)態(tài)載入器(dynamic linker/loader);對(duì)于elf的可執(zhí)行程序,是由ld-linux.so來完成的,它先后搜索elf文件的DT_RPATH段(不可控) =》 環(huán)境變量LD_LIBRARY_PATH =》 /etc/ld.so.cache文件列表 =》 /lib/和/usr/lib 目錄找到庫文件后載入內(nèi)存。

那么我們需要做的就是將動(dòng)態(tài)庫所在目錄的絕對(duì)路徑加到動(dòng)態(tài)載入器搜索序的任一次序中,下面說具體實(shí)現(xiàn)方法:

方法1:拷貝自己制作的共享庫到/lib或/usr/lib,不推薦

方法2:將動(dòng)態(tài)庫所在目錄的絕對(duì)路徑添加到系統(tǒng)環(huán)境變量中

2.1、將動(dòng)態(tài)庫所在目錄的絕對(duì)路徑臨時(shí)添加到環(huán)境變量中(隨終端關(guān)閉失效)

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

2.2、將動(dòng)態(tài)庫所在目錄的絕對(duì)路徑設(shè)置到~/.bashrc或/etc/profile中(永久生效)

用戶級(jí)別:追加庫路徑到~/.bashrc文件尾

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

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

系統(tǒng)級(jí)別:追加庫路徑到/etc/profile文件尾

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

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

方法3:將動(dòng)態(tài)庫所在目錄的絕對(duì)路徑添加到 /etc/ld.so.cache文件中(2步實(shí)現(xiàn))

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

運(yùn)行l(wèi)dconfig (需要super user權(quán)限),該命令會(huì)重建/etc/ld.so.cache文件

以上就是linux動(dòng)態(tài)庫找不到怎么辦的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注億速云其它相關(guān)文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI