91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

Linux愛好者 ? 來源:Linux愛好者 ? 作者:戀貓大鯉魚 ? 2021-02-02 11:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.命令簡介

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

whichldd
/usr/bin/ldd

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

ldd 默認開啟的環(huán)境變量是:LD_TRACE_LOADED_OBJECTS=1。也就是說,LD_TRACE_LOADED_OBJECTS為必要環(huán)境變量,其他環(huán)境變量的設(shè)置是可選的。其他的變量的設(shè)置與ldd命令選項的對應(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)境變量不為空時,任何可執(zhí)行程序在運行時,都會只顯示依賴的動態(tài)庫,程序并不真正地執(zhí)行。測試如下:

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è)置 ld-linux.so 依賴的環(huán)境變量來影響 ld-linux.so的工作方式,使得可執(zhí)行模塊加載時顯示其依賴的動態(tài)庫。實際上可以直接執(zhí)行 ld-linux.so 模塊,如/lib/ld-linux.so.2 --list program,來達到命令ldd program的效果。

2.命令格式

ldd[OPTIONS]

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

3.選項說明

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

4.示例說明

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

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)

參考文獻

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

責(zé)任編輯:xj

原文標題:每天一個 Linux 命令(103):ldd 命令

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


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

    關(guān)注

    88

    文章

    11763

    瀏覽量

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

    關(guān)注

    5

    文章

    755

    瀏覽量

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

    關(guān)注

    0

    文章

    36

    瀏覽量

    8503

原文標題:每天一個 Linux 命令(103):ldd 命令

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    一文詳解SystemC仿真的編譯

    AMD Vivado 設(shè)計套件以文件的形式提供仿真模型。仿真包含器件和 IP 的行為和時序模型。編譯后的可供多個設(shè)計項目使用。用戶必須在設(shè)計仿真之前通過名為 compile_s
    的頭像 發(fā)表于 12-12 15:08 ?4835次閱讀
    一文詳解SystemC仿真<b class='flag-5'>庫</b>的編譯

    什么是KEIL的微(microlib)

    Microlib不支持生成”位置無關(guān)的代碼(position-independent code)”。因此使用Microlib編寫的程序不能生成可用的共享,即.lib文件
    發(fā)表于 12-10 06:27

    搭建自己的ubuntu系統(tǒng)之必要安裝

    在進行開發(fā)之前,還需要一些其他的必要,我們使用以下命令逐一安裝,安裝前需保證網(wǎng)絡(luò)可正常使用,能上外網(wǎng):elf@ubuntu:~$ sudo apt-get update//更新下載源信息
    發(fā)表于 09-25 09:47

    不同場景下的文件共享方案-SMB/WebDAV/FTP/ZeroNews

    四大主流文件共享方案,為企業(yè)選型提供專業(yè)參考。 SMB 簡介 SMB(Server Message Block) 是一種網(wǎng)絡(luò)文件共享協(xié)議,主要用于
    的頭像 發(fā)表于 08-28 12:04 ?998次閱讀
    不同場景下的<b class='flag-5'>文件</b><b class='flag-5'>共享</b>方案-SMB/WebDAV/FTP/ZeroNews

    數(shù)據(jù)數(shù)據(jù)恢復(fù)—MongoDB數(shù)據(jù)庫文件丟失的數(shù)據(jù)恢復(fù)案例

    將MongoDB數(shù)據(jù)庫文件拷貝到其他分區(qū),數(shù)據(jù)復(fù)制完成后將MongoDB數(shù)據(jù)原先所在的分區(qū)進行了格式化操作。 結(jié)果發(fā)現(xiàn)拷貝過去的數(shù)據(jù)無法使用。管理員又將數(shù)據(jù)拷貝回原始分區(qū),MongoDB服務(wù)仍然
    的頭像 發(fā)表于 07-01 11:13 ?644次閱讀
    數(shù)據(jù)<b class='flag-5'>庫</b>數(shù)據(jù)恢復(fù)—MongoDB數(shù)據(jù)<b class='flag-5'>庫文件</b>丟失的數(shù)據(jù)恢復(fù)案例

    數(shù)據(jù)數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)被加密如何恢復(fù)數(shù)據(jù)?

    SQL Server數(shù)據(jù)故障: SQL Server數(shù)據(jù)被加密,無法使用。 數(shù)據(jù)MDF、LDF、log日志文件名字被篡改。
    的頭像 發(fā)表于 06-25 13:54 ?685次閱讀
    數(shù)據(jù)<b class='flag-5'>庫</b>數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)<b class='flag-5'>庫</b>被加密如何恢復(fù)數(shù)據(jù)?

    達夢數(shù)據(jù)常用管理SQL命令詳解

    達夢數(shù)據(jù)常用管理SQL命令詳解
    的頭像 發(fā)表于 06-17 15:12 ?7200次閱讀
    達夢數(shù)據(jù)<b class='flag-5'>庫</b>常用管理SQL<b class='flag-5'>命令</b>詳解

    oracle數(shù)據(jù)恢復(fù)—oracle數(shù)據(jù)誤執(zhí)行錯誤truncate命令如何恢復(fù)數(shù)據(jù)?

    oracle數(shù)據(jù)誤執(zhí)行truncate命令導(dǎo)致數(shù)據(jù)丟失是一種常見情況。通常情況下,oracle數(shù)據(jù)誤操作刪除數(shù)據(jù)只需要通過備份恢復(fù)數(shù)據(jù)即可。也會碰到一些特殊情況,例如數(shù)據(jù)備份無法
    的頭像 發(fā)表于 06-05 16:01 ?1134次閱讀
    oracle數(shù)據(jù)恢復(fù)—oracle數(shù)據(jù)<b class='flag-5'>庫</b>誤執(zhí)行錯誤truncate<b class='flag-5'>命令</b>如何恢復(fù)數(shù)據(jù)?

    3D AD文件

    3D文件
    發(fā)表于 05-28 13:57 ?6次下載

    貢獻 OpenHarmony 關(guān)鍵配置

    項目,然后創(chuàng)建一個模塊,選擇 static library。詳細步驟可參考:開發(fā)靜態(tài)共享包。 > 在項目內(nèi)會生成 library 文件夾 - 對所創(chuàng)建的模塊進行開發(fā),需要
    發(fā)表于 05-28 13:46

    PCB標準封裝文件

    PCB標準封裝文件
    發(fā)表于 05-22 17:43 ?10次下載

    HarmonyOS優(yōu)化應(yīng)用包體積大小問題性能優(yōu)化

    和資源,消除使用HAR靜態(tài)共享包造成的多包(HAP、HSP)間代碼和資源的重復(fù)拷貝,從而減小應(yīng)用包大小。 使用ohpm的override機制或者開啟resolve_conflict解決依賴沖突減少
    發(fā)表于 05-20 14:50

    一文掌握RK3568開發(fā)板Android13掛載Windows共享目錄

    。RK3568支持SATA/PCIE/USB3.0等各類型外圍接口,內(nèi)置獨立的NPU,可用于輕量級人工智能應(yīng)用。 ▲開發(fā)板 Windows開啟共享目錄 windows系統(tǒng)中,文件共享
    發(fā)表于 04-16 13:55

    數(shù)據(jù)數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)庫文件拷貝后服務(wù)無法啟動的數(shù)據(jù)恢復(fù)

    MongoDB數(shù)據(jù)數(shù)據(jù)恢復(fù)環(huán)境: 一臺Windows Server操作系統(tǒng)虛擬機上部署MongoDB數(shù)據(jù)。 MongoDB數(shù)據(jù)故障: 管理員在未關(guān)閉MongoDB服務(wù)的情況下拷貝數(shù)據(jù)
    的頭像 發(fā)表于 04-09 11:34 ?874次閱讀
    數(shù)據(jù)<b class='flag-5'>庫</b>數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)<b class='flag-5'>庫文件</b>拷貝后服務(wù)無法啟動的數(shù)據(jù)恢復(fù)

    部署計算機上運行 LabVIEW 應(yīng)用程序時出現(xiàn)以下錯誤: “缺少外部函數(shù) dll...”解決辦法

    如果你既有 DLL 文件,也有頭 (.h) 文件,那么可以使用共享批量生成VI,不用再一個一個使用“調(diào)用庫函數(shù)節(jié)點”來調(diào)用DLL,源代碼運行是沒有問題,一旦生成應(yīng)用
    發(fā)表于 04-01 19:10