0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ldd命令:用于打印程序或者共享庫(kù)文件所依賴的共享庫(kù)列表

Linux愛好者 ? 來(lái)源:Linux愛好者 ? 作者:戀貓大鯉魚 ? 2021-02-02 11:37 ? 次閱讀

1.命令簡(jiǎn)介

ldd 命令用于打印程序或者共享庫(kù)文件所依賴的共享庫(kù)列表。注意,ldd 本身不是一個(gè)二進(jìn)制程序,而是一個(gè) Shell 腳本,使用文本編輯器 vim 可以查看其內(nèi)容,具體目錄可以使用 which 命令查看:

whichldd
/usr/bin/ldd

我們知道,Linux 的動(dòng)態(tài)庫(kù)裝載器 ld-linux.so 模塊會(huì)先于 executable 模塊工作,并獲得控制權(quán),ld-linux.so 會(huì)通過系統(tǒng)環(huán)境變量的設(shè)置,選擇只顯示可執(zhí)行模塊的dependency,而不運(yùn)行可執(zhí)行模塊。相關(guān)環(huán)境變量有:

ldd 默認(rèn)開啟的環(huán)境變量是:LD_TRACE_LOADED_OBJECTS=1。也就是說(shuō),LD_TRACE_LOADED_OBJECTS為必要環(huán)境變量,其他環(huán)境變量的設(shè)置是可選的。其他的變量的設(shè)置與ldd命令選項(xiàng)的對(duì)應(yīng)關(guān)系如下:

-d,--data-relocs->LD_WARN=yes
-r,--function-relocs->LD_WARN和LD_BIND_NOW=yes
-u,--unused->LD_DEBUG="unused"
-v,--verbose->LD_VERBOSE=yes

比如設(shè)置LD_TRACE_LOADED_OBJECTS環(huán)境變量不為空時(shí),任何可執(zhí)行程序在運(yùn)行時(shí),都會(huì)只顯示依賴的動(dòng)態(tài)庫(kù),程序并不真正地執(zhí)行。測(cè)試如下:

exportLD_TRACE_LOADED_OBJECTS=1
ls
linux-vdso.so.1=>(0x00007ffd1d3cf000)
/$LIB/libonion.so=>/lib64/libonion.so(0x00007fbbe7162000)
libselinux.so.1=>/lib64/libselinux.so.1(0x00007fbbe6e2e000)
libcap.so.2=>/lib64/libcap.so.2(0x00007fbbe6c29000)
libacl.so.1=>/lib64/libacl.so.1(0x00007fbbe6a20000)
libc.so.6=>/lib64/libc.so.6(0x00007fbbe665e000)
libdl.so.2=>/lib64/libdl.so.2(0x00007fbbe645a000)
libpthread.so.0=>/lib64/libpthread.so.0(0x00007fbbe623e000)
libpcre.so.1=>/lib64/libpcre.so.1(0x00007fbbe5fdd000)
liblzma.so.5=>/lib64/liblzma.so.5(0x00007fbbe5db8000)
/lib64/ld-linux-x86-64.so.2(0x00007fbbe7053000)
libattr.so.1=>/lib64/libattr.so.1(0x00007fbbe5bb3000)

撤銷該環(huán)境變量,ls 即可恢復(fù)正常使用:

unsetLD_TRACE_LOADED_OBJECTS
ls
ChangelogChangelog.lndablelvtxt.txt

由此可見,ldd 命令其實(shí)是通過設(shè)置 ld-linux.so 依賴的環(huán)境變量來(lái)影響 ld-linux.so的工作方式,使得可執(zhí)行模塊加載時(shí)顯示其依賴的動(dòng)態(tài)庫(kù)。實(shí)際上可以直接執(zhí)行 ld-linux.so 模塊,如/lib/ld-linux.so.2 --list program,來(lái)達(dá)到命令ldd program的效果。

2.命令格式

ldd[OPTIONS]

其中[OPTIONS]為可選的命令選項(xiàng),...為必填的程序或者共享庫(kù)文件列表。

3.選項(xiàng)說(shuō)明

--version:打印ldd版本號(hào)
-v, --verbose:詳細(xì)信息模式,打印所有相關(guān)信息
-u, --unused:打印未使用的直接依賴
-d, --data-relocs:執(zhí)行重定位和報(bào)告任何丟失的對(duì)象
-r,--function-relocs:執(zhí)行數(shù)據(jù)對(duì)象和函數(shù)的重定位,并且報(bào)告任何丟失的對(duì)象和函數(shù)。(只對(duì)ELF格式文件有效)
--help:顯示幫助信息

4.示例說(shuō)明

(1)顯示可執(zhí)行文件依賴的動(dòng)態(tài)鏈接庫(kù)。

ldd/usr/bin/ls
linux-vdso.so.1=>(0x00007ffd90514000)
/$LIB/libonion.so=>/lib64/libonion.so(0x00007f294ade8000)
libselinux.so.1=>/lib64/libselinux.so.1(0x00007f294aab4000)
libcap.so.2=>/lib64/libcap.so.2(0x00007f294a8af000)
libacl.so.1=>/lib64/libacl.so.1(0x00007f294a6a6000)
libc.so.6=>/lib64/libc.so.6(0x00007f294a2e4000)
libdl.so.2=>/lib64/libdl.so.2(0x00007f294a0e0000)
libpthread.so.0=>/lib64/libpthread.so.0(0x00007f2949ec4000)
libpcre.so.1=>/lib64/libpcre.so.1(0x00007f2949c63000)
liblzma.so.5=>/lib64/liblzma.so.5(0x00007f2949a3e000)
/lib64/ld-linux-x86-64.so.2(0x00007f294acd9000)
libattr.so.1=>/lib64/libattr.so.1(0x00007f2949839000)

參考文獻(xiàn)

[1] ldd manual
[2] Linux命令大全.ldd命令
[3] 博客園.ldd命令

責(zé)任編輯:xj

原文標(biāo)題:每天一個(gè) Linux 命令(103):ldd 命令

文章出處:【微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11177

    瀏覽量

    208499
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    669

    瀏覽量

    21957
  • Shell腳本
    +關(guān)注

    關(guān)注

    0

    文章

    36

    瀏覽量

    7955

原文標(biāo)題:每天一個(gè) Linux 命令(103):ldd 命令

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    用于具有AES硬件加密功能的TM4C129器件的共享密鑰引導(dǎo)加載程序

    電子發(fā)燒友網(wǎng)站提供《用于具有AES硬件加密功能的TM4C129器件的共享密鑰引導(dǎo)加載程序.pdf》資料免費(fèi)下載
    發(fā)表于 08-27 09:56 ?0次下載
    <b class='flag-5'>用于</b>具有AES硬件加密功能的TM4C129器件的<b class='flag-5'>共享</b>密鑰引導(dǎo)加載<b class='flag-5'>程序</b>

    PADS-3D庫(kù)文件

    PADS-3D庫(kù)文件
    發(fā)表于 08-15 17:20 ?13次下載

    Microbit庫(kù)文件

    Microbit ?庫(kù)文件
    發(fā)表于 08-07 14:29 ?0次下載

    FSP庫(kù)啟動(dòng)文件說(shuō)明

    FSP庫(kù)啟動(dòng)文件說(shuō)明
    的頭像 發(fā)表于 06-04 08:06 ?308次閱讀
    FSP<b class='flag-5'>庫(kù)</b>啟動(dòng)<b class='flag-5'>文件</b>說(shuō)明

    Linux系統(tǒng)中共享文件找不到怎么辦

    ? 1.首先輸下面命令查看是否真的設(shè)置成功共享文件夾 vmware-hgfsclient 如果確實(shí)已經(jīng)設(shè)置過共享文件夾將輸出window下
    的頭像 發(fā)表于 05-11 08:49 ?640次閱讀
    Linux系統(tǒng)中<b class='flag-5'>共享</b><b class='flag-5'>文件</b>找不到怎么辦

    HarmonyOS開發(fā):【基于命令行(安裝庫(kù)和工具集)】

    使用命令行進(jìn)行設(shè)備開發(fā)時(shí),可以通過以下步驟安裝編譯OpenHarmony需要的庫(kù)和工具。
    的頭像 發(fā)表于 04-25 21:03 ?325次閱讀
    HarmonyOS開發(fā):【基于<b class='flag-5'>命令</b>行(安裝<b class='flag-5'>庫(kù)</b>和工具集)】

    Linux系統(tǒng)共享文件缺失的解決策略

    如果確實(shí)已經(jīng)設(shè)置過共享文件夾將輸出window下共享文件夾名字
    的頭像 發(fā)表于 04-15 10:25 ?802次閱讀
    Linux系統(tǒng)<b class='flag-5'>共享</b><b class='flag-5'>文件</b>缺失的解決策略

    鴻蒙開發(fā)學(xué)習(xí):【OpenHarmony HAR】

    OpenHarmony js/ts三方庫(kù)使用的是OpenHarmony靜態(tài)共享包,即HAR(Harmony Archive),可以包含js/ts代碼、c++庫(kù)、資源和配置文件。通過HA
    的頭像 發(fā)表于 03-18 16:27 ?613次閱讀

    Linux配置NFS文件共享詳解

    NFS是Network File System的縮寫,是一種分布式文件系統(tǒng)協(xié)議,用于在計(jì)算機(jī)網(wǎng)絡(luò)上共享文件。它允許客戶端計(jì)算機(jī)通過網(wǎng)絡(luò)遠(yuǎn)程訪問和處理遠(yuǎn)程服務(wù)器上的
    的頭像 發(fā)表于 12-27 09:53 ?2416次閱讀
    Linux配置NFS<b class='flag-5'>文件</b><b class='flag-5'>共享</b>詳解

    博途用戶自定義庫(kù)的使用

    中經(jīng)常使用的函數(shù)/函數(shù)塊/數(shù)據(jù)類型等存放到自定義庫(kù)中,方便自己使用及與別人共享。博途具有很強(qiáng)的庫(kù)管理功能,包括:庫(kù)版本管理,庫(kù)的更新及清掃等
    的頭像 發(fā)表于 12-25 10:08 ?804次閱讀
    博途用戶自定義<b class='flag-5'>庫(kù)</b>的使用

    mysql數(shù)據(jù)庫(kù)基礎(chǔ)命令

    MySQL是一個(gè)流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),經(jīng)常用于存儲(chǔ)、管理和操作數(shù)據(jù)。在本文中,我們將詳細(xì)介紹MySQL的基礎(chǔ)命令,并提供與每個(gè)命令相關(guān)的詳細(xì)解釋。 登錄MySQL 要登錄MySQ
    的頭像 發(fā)表于 12-06 10:56 ?511次閱讀

    mysql數(shù)據(jù)庫(kù)備份與還原

    法、備份文件的恢復(fù)以及一些常見問題的解決方案。 第一部分:MySQL備份的不同方法 1.1 使用mysqldump命令備份 mysqldump是MySQL提供的一個(gè)命令行工具,用于備份
    的頭像 發(fā)表于 11-23 14:32 ?1100次閱讀

    navicat怎么導(dǎo)出數(shù)據(jù)庫(kù)文件

    導(dǎo)出數(shù)據(jù)庫(kù)文件是數(shù)據(jù)庫(kù)管理中的一個(gè)重要操作,而Navicat是一款流行的數(shù)據(jù)庫(kù)管理工具,具有強(qiáng)大的導(dǎo)出功能。在本文中,我將詳細(xì)介紹如何使用Navicat導(dǎo)出數(shù)據(jù)庫(kù)文件,并在步驟中提供所
    的頭像 發(fā)表于 11-21 10:53 ?7608次閱讀

    linux中查找文件命令

    前目錄及其子目錄中查找名為“myfile.txt”的文件,可以使用以下命令: find . -name 'myfile.txt' locate 命令:通過搜索數(shù)據(jù)庫(kù)來(lái)查找
    的頭像 發(fā)表于 11-08 14:24 ?1153次閱讀

    為全志T507-H開發(fā)板配置Samba服務(wù),高效實(shí)現(xiàn)跨系統(tǒng)的文件共享

    間的壁壘以實(shí)現(xiàn)跨平臺(tái)的文件共享”是一項(xiàng)不能被忽視的重要功能,那么該如何做到這一點(diǎn)呢? 我們可以使用Samba,這是一款在Linux系統(tǒng)上實(shí)現(xiàn)SMB的免費(fèi)軟件,可以在不同操作系統(tǒng)之間實(shí)現(xiàn)文件
    發(fā)表于 11-08 09:34