ldconfig與 /etc/ld.so.conf

Linux 系統(tǒng)上有兩類根本不同的 Linux 可執(zhí)行程序骡男。第一類是靜態(tài)鏈接的可執(zhí)行程序赃蛛。靜態(tài)可執(zhí)行程序包含執(zhí)行所需的所有函數(shù) — 換句話說,它們是“完整的”港粱。因?yàn)檫@一原因螃成,靜態(tài)可執(zhí)行程序不依賴任何外部庫就可以運(yùn)行。

  第二類是動(dòng)態(tài)鏈接的可執(zhí)行程序查坪。

  靜態(tài)可執(zhí)行程序與動(dòng)態(tài)可執(zhí)行程序比較

  我們可以用 ldd 命令來確定某一特定可執(zhí)行程序是否為靜態(tài)鏈接的:

  # ldd /sbin/sln

  not a dynamic executable

  “not a dynamic executable”是 ldd 說明 sln 是靜態(tài)鏈接的一種方式⌒饪牛現(xiàn)在,讓我們比較 sln 與其非靜態(tài)同類 ln 的大羞浠荨:

  # ls -l /bin/ln /sbin/sln

  -rwxr-xr-x? ? 1 root? ? root? ? ? ? 23000 Jan 14 00:36 /bin/ln

  -rwxr-xr-x? ? 1 root? ? root? ? ? 381072 Jan 14 00:31 /sbin/sln

  如您所見击吱,sln 的大小超過 ln 十倍。ln 比 sln 小這么多是因?yàn)樗莿?dòng)態(tài)可執(zhí)行程序遥昧。動(dòng)態(tài)可執(zhí)行程序是不完整的程序覆醇,它依靠外部共享庫來提供運(yùn)行所需的許多函數(shù)。

  動(dòng)態(tài)鏈接相關(guān)性

  要查看 ln 依賴的所有共享庫的列表炭臭,可以使用 ldd 命令:

  # ldd /bin/ln

  libc.so.6 => /lib/libc.so.6 (0x40021000)

  /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

  如您所見永脓,ln 依賴外部共享庫 libc.so.6 和 ld-linux.so.2。通常鞋仍,動(dòng)態(tài)鏈接的程序比其靜態(tài)鏈接的等價(jià)程序小得多常摧。不過,靜態(tài)鏈接的程序可以在某些低級(jí)維護(hù)任務(wù)中發(fā)揮作用。例如落午,sln 是修改位于 /lib 中的不同庫符號(hào)鏈接的極佳工具谎懦。但通常您會(huì)發(fā)現(xiàn)幾乎所有 Linux 系統(tǒng)上的可執(zhí)行程序都是某種動(dòng)態(tài)鏈接的變體。

  動(dòng)態(tài)裝入器

  那么溃斋,如果動(dòng)態(tài)可執(zhí)行程序不包含運(yùn)行所需的所有函數(shù)界拦,Linux 的哪部分負(fù)責(zé)將這些程序和所有必需的共享庫一起裝入,以使它們能正確執(zhí)行呢梗劫?答案是動(dòng)態(tài)裝入器(dynamic loader)享甸,它實(shí)際上是您在 ln 的 ldd 清單中看到的作為共享庫相關(guān)性列出的 ld-linux.so.2 庫。動(dòng)態(tài)裝入器負(fù)責(zé)裝入動(dòng)態(tài)鏈接的可執(zhí)行程序運(yùn)行所需的共享庫∈崆龋現(xiàn)在蛉威,讓我們迅速查看一下動(dòng)態(tài)裝入器如何在系統(tǒng)上找到適當(dāng)?shù)墓蚕韼臁?/p>

  ld.so.conf

  動(dòng)態(tài)裝入器找到共享庫要依靠?jī)蓚€(gè)文件 — /etc/ld.so.conf 和 /etc/ld.so.cache。如果您對(duì) /etc/ld.so.conf 文件進(jìn)行 cat 操作走哺,您可能會(huì)看到一個(gè)與下面類似的清單:

  $ cat /etc/ld.so.conf

  /usr/X11R6/lib

  /usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3

  /usr/lib/mozilla

  /usr/lib/qt-x11-2.3.1/lib

  /usr/local/lib

  ld.so.conf 文件包含一個(gè)所有目錄(/lib 和 /usr/lib 除外蚯嫌,它們會(huì)自動(dòng)包含在其中)的清單,動(dòng)態(tài)裝入器將在其中查找共享庫割坠。

  ld.so.cache

  但是在動(dòng)態(tài)裝入器能“看到”這一信息之前齐帚,必須將它轉(zhuǎn)換到 ld.so.cache 文件中”撕撸可以通過運(yùn)行 ldconfig 命令做到這一點(diǎn):

  # ldconfig

  當(dāng) ldconfig 操作結(jié)束時(shí)对妄,您會(huì)有一個(gè)最新的 /etc/ld.so.cache 文件,它反映您對(duì) /etc/ld.so.conf 所做的更改敢朱。從這一刻起剪菱,動(dòng)態(tài)裝入器在尋找共享庫時(shí)會(huì)查看您在 /etc/ld.so.conf 中指定的所有新目錄。

  ldconfig 技巧

  要查看 ldconfig 可以“看到”的所有共享庫拴签,請(qǐng)輸入:

  # ldconfig -p | less

  還有另一個(gè)方便的技巧可以用來配置共享庫路徑孝常。有時(shí)候您希望告訴動(dòng)態(tài)裝入器在嘗試任何 /etc/ld.so.conf 路徑以前先嘗試使用特定目錄中的共享庫。在您運(yùn)行的較舊的應(yīng)用程序不能與當(dāng)前安裝的庫版本一起工作的情況下蚓哩,這會(huì)比較方便构灸。

  LD_LIBRARY_PATH

  要指示動(dòng)態(tài)裝入器首先檢查某個(gè)目錄,請(qǐng)將 LD_LIBRARY_PATH 變量設(shè)置成您希望搜索的目錄岸梨。多個(gè)路徑之間用冒號(hào)分隔喜颁;例如:

  # export LD_LIBRARY_PATH="/usr/lib/old:/opt/lib"

  導(dǎo)出 LD_LIBRARY_PATH 后,如有可能曹阔,所有從當(dāng)前 shell 啟動(dòng)的可執(zhí)行程序都將使用 /usr/lib/old 或 /opt/lib 中的庫半开,如果仍不能滿足一些共享庫相關(guān)性要求,則轉(zhuǎn)回到 /etc/ld.so.conf 中指定的庫赃份。

https://www.cnblogs.com/leijiangtao/p/4801336.html

https://blog.csdn.net/fangquan1980/article/details/49363173

https://www.linuxidc.com/Linux/2015-07/120192.htm

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末寂拆,一起剝皮案震驚了整個(gè)濱河市奢米,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纠永,老刑警劉巖鬓长,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異渺蒿,居然都是意外死亡痢士,警方通過查閱死者的電腦和手機(jī)彪薛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門茂装,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人善延,你說我怎么就攤上這事少态。” “怎么了易遣?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵彼妻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我豆茫,道長(zhǎng)侨歉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任揩魂,我火速辦了婚禮幽邓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘火脉。我一直安慰自己牵舵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布倦挂。 她就那樣靜靜地躺著畸颅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪方援。 梳的紋絲不亂的頭發(fā)上没炒,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音犯戏,去河邊找鬼送火。 笑死,一個(gè)胖子當(dāng)著我的面吹牛笛丙,可吹牛的內(nèi)容都是我干的漾脂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼胚鸯,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼刑桑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起沉桌,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎形耗,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辙浑,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡激涤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了判呕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倦踢。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖侠草,靈堂內(nèi)的尸體忽然破棺而出辱挥,到底是詐尸還是另有隱情,我是刑警寧澤边涕,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布晤碘,位于F島的核電站,受9級(jí)特大地震影響功蜓,放射性物質(zhì)發(fā)生泄漏园爷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一式撼、第九天 我趴在偏房一處隱蔽的房頂上張望童社。 院中可真熱鬧,春花似錦端衰、人聲如沸叠洗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽灭抑。三九已至,卻和暖如春抵代,著一層夾襖步出監(jiān)牢的瞬間腾节,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工荤牍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留案腺,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓康吵,卻偏偏與公主長(zhǎng)得像劈榨,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子晦嵌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容