国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

深入淺析Linux庫(kù)文件的搜索路徑

2024-08-27 23:58:31
字體:
供稿:網(wǎng)友

linux有很多值得學(xué)習(xí)的地方,這里我們主要介紹linux庫(kù)文件,經(jīng)過搜集和整理linux庫(kù)文件材料,在這里拿出來和大家分享一下,希望大家看后會(huì)有不少收獲.

linux庫(kù)文件在連接(靜態(tài)庫(kù)和共享庫(kù))和運(yùn)行(僅限于使用共享庫(kù)的程序)時(shí)被使用,其搜索路徑是在系統(tǒng)中進(jìn)行設(shè)置的。

一般 Linux 系統(tǒng)把 /lib 和 /usr/lib 兩個(gè)目錄作為默認(rèn)的庫(kù)搜索路徑,所以使用這兩個(gè)目錄中的庫(kù)時(shí)不需要進(jìn)行設(shè)置搜索路徑即可直接使用。對(duì)于處于默認(rèn)庫(kù)搜索路徑之外的庫(kù),需要將庫(kù)的位置添加到庫(kù)的搜索路徑之中。

設(shè)置linux庫(kù)文件的搜索路徑有下列兩種方式,可任選其一使用,在環(huán)境變量 LD_LIBRARY_PATH 中指明庫(kù)的搜索路徑,在 /etc/ld.so.conf 文件中添加庫(kù)的搜索路徑,將自己可能存放庫(kù)文件的路徑都加入到/etc/ld.so.conf中是明智的選擇,添加方法也極其簡(jiǎn)單,將linux庫(kù)文件的絕對(duì)路徑直接寫進(jìn)去就OK了,一行一個(gè)。

例如:

/usr/X11R6/lib

/usr/local/lib

/opt/lib

需要注意的是:第二種搜索路徑的設(shè)置方式對(duì)于程序連接時(shí)的庫(kù)(包括共享庫(kù)和靜態(tài)庫(kù))的定位已經(jīng)足夠了,但是對(duì)于使用了共享庫(kù)的程序的執(zhí)行還是不夠的。這是因?yàn)闉榱思涌斐绦驁?zhí)行時(shí)對(duì)共享庫(kù)的定位速度,避免使用搜索路徑查找共享庫(kù)的低效率,所以是直接讀取庫(kù)列表文件 /etc/ld.so.cache 從中進(jìn)行搜索的。

/etc/ld.so.cache 是一個(gè)非文本的數(shù)據(jù)文件,不能直接編輯,它是根據(jù) /etc/ld.so.conf 中設(shè)置的搜索路徑由 /sbin/ldconfig 命令將這些搜索路徑下的共享庫(kù)文件集中在一起而生成的(ldconfig 命令要以 root 權(quán)限執(zhí)行)。因此,為了保證程序執(zhí)行時(shí)對(duì)庫(kù)的定位,在 /etc/ld.so.conf 中進(jìn)行了庫(kù)搜索路徑的設(shè)置之后,還必須要運(yùn)行 /sbin/ldconfig 命令更新 /etc/ld.so.cache 文件之后才可以。

ldconfig,簡(jiǎn)單的說,它的作用就是將/etc/ld.so.conf列出的路徑下的linux庫(kù)文件緩存到/etc/ld.so.cache 以供使用。因此當(dāng)安裝完一些庫(kù)文件,(例如剛安裝好glib),或者修改ld.so.conf增加新的庫(kù)路徑后,需要運(yùn)行一下 /sbin/ldconfig使所有的庫(kù)文件都被緩存到ld.so.cache中,如果沒做,即使庫(kù)文件明明就在/usr/lib下的,也是不會(huì)被使用的,結(jié)果編譯過程中抱錯(cuò),缺少xxx庫(kù),去查看發(fā)現(xiàn)明明就在那放著,搞的想大罵computer蠢豬一個(gè)。

在程序連接時(shí),對(duì)于linux庫(kù)文件(靜態(tài)庫(kù)和共享庫(kù))的搜索路徑,除了上面的設(shè)置方式之外,還可以通過 -L 參數(shù)顯式指定。因?yàn)橛?-L 設(shè)置的路徑將被優(yōu)先搜索,所以在連接的時(shí)候通常都會(huì)以這種方式直接指定要連接的庫(kù)的路徑。

前面已經(jīng)說明過了,庫(kù)搜索路徑的設(shè)置有兩種方式:在環(huán)境變量 LD_LIBRARY_PATH 中設(shè)置以及在 /etc/ld.so.conf 文件中設(shè)置。其中,第二種設(shè)置方式需要 root 權(quán)限,以改變 /etc/ld.so.conf 文件并執(zhí)行 /sbin/ldconfig 命令。而且,當(dāng)系統(tǒng)重新啟動(dòng)后,所有的基于 GTK2 的程序在運(yùn)行時(shí)都將使用新安裝的 GTK+ 庫(kù)。不幸的是,由于 GTK+ 版本的改變,這有時(shí)會(huì)給應(yīng)用程序帶來兼容性的問題,造成某些程序運(yùn)行不正常。為了避免出現(xiàn)上面的這些情況,在 GTK+ 及其依賴庫(kù)的安裝過程中對(duì)于linux庫(kù)的搜索路徑的設(shè)置將采用第一種方式進(jìn)行。

這種設(shè)置方式不需要 root 權(quán)限,設(shè)置也簡(jiǎn)單:

$ export LD_LIBRARY_PATH=/opt/gtk/lib:$LD_LIBRARY_PATH

可以用下面的命令查看 LD_LIBRAY_PATH 的設(shè)置內(nèi)容:

$ echo $LD_LIBRARY_PATH

至此,庫(kù)的兩種設(shè)置就完成了.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 呼伦贝尔市| 嘉定区| 霍州市| 凤山市| 若尔盖县| 平阳县| 青冈县| 龙川县| 许昌市| 翁牛特旗| 宜兰市| 东明县| 万源市| 永吉县| 禹州市| 东乡县| 贵州省| 永新县| 和平县| 浠水县| 乌拉特后旗| 亳州市| 淮安市| 东城区| 淳化县| 阳江市| 伊宁县| 通山县| 台中市| 神农架林区| 安达市| 彰化县| 开化县| 乐山市| 东城区| 景东| 射洪县| 当涂县| 阳春市| 游戏| 都江堰市|