LDD命令的原理與使用方法

2021-04-27 18:40:40 字數 2351 閱讀 1877

ldd

命令的原理與使用方法

作用:用來檢視程式執行所需的共享庫,

常用來解決程式因缺少某個庫檔案而不能執行的一些問題。

ldd命令原理

1、首先

ldd不是個可執行程式,而只是個

shell指令碼2

、ldd

能夠顯示可執行模組的

dependency

其原理是通過設定一系列的環境變數,如下:

ld_trace_loaded_objects

、ld_warn

、ld_bind_now

、ld_library_version

、ld_verbose

等。當ld_trace_loaded_objects

環境變數不為空時,所有可執行程式在執行時,他都會只顯示模組的dependency

,而程式並不真正執行。要不你能在

shell

終端測試一下,如下:

(1) export ld_trace_loaded_objects=1

(2)

再執行所有的程式,如

ls等,看看程式的執行結果

3、ldd

顯示可執行模組的dependency

的工作原理,其實質是通過ld-linux.so

elf

動態庫的裝載器)來實現的。我們知道,

ld-linux.so

模組會先於

executable

模組程式工作,並獲得控制權,因此當上述的那些環境變數被設定時,

ld-linux.so

選擇了顯示可執行模組的

dependency。4

實際上能直接執行ld-linux.so

模組,如:/lib/ld-linux.so.2 --list program

(這相當於ldd program

ldd命令使用方法(摘自

ldd --help)

名稱ldd -

列印共享庫的依賴關係

大綱ldd [

選項]...

檔案...

描述ldd輸出在命令列上指定的每個程式或共享庫需要的共享庫。

選項

--version

列印ldd

的版本號

-v --verbose

列印所有資訊,例如包括符號的版本資訊

-d --data-relocs

執行符號重部署,並報告缺少的目標物件(只對

elf格式適用)

-r --function-relocs

對目標物件和函式執行重新部署,並報告缺少的目標物件和函式(只對

elf格式適用)

--help

用法資訊注意:

ldd的標準版本和

glibc2

一起提供。

libc5

和老版本以前提供,在一些系統中還存在。在

libc5

版本中長選項不支援。另一方面,

glibc2

版本不支援

-v選項,只提供等價的

--version

選項。如果命令列中給定的庫名字包含

』/』,這個程式的

libc5

版本將使用他作為庫名字;否則他將在標準位置搜尋庫。執行乙個當前目錄下的共享庫,加字首

"./"。錯誤

:ldd

不能工作在

a.out

格式的共享庫上。

ldd不能工作在一些非常老的

a.out

程式上,這些程式在支援

ldd的編譯器發行前已建立。如果你在這種型別的程式上使用

ldd,程式將嘗試

argc = 0

的執行方式,其結果不可預知。

ldd命令原理與使用

作用 用來檢視程式執行所需的共享庫,常用來解決程式因缺少某個庫檔案而不能執行的一些問題。ldd命令原理 摘自網路 1 首先ldd不是乙個可執行程式,而只是乙個shell指令碼 2 ldd能夠顯示可執行模組的dependency,其原理是通過設定一系列的環境變數,如下 ld trace loaded ...

zebra命令儲存原理和使用方法

zebra在設計命令格式時,將命令節點node和命令command分開,整個命令結構是乙個樹狀,如圖 noden表示命令節點,cmdn表示具體命令,在zebra的整個命令列設計當中,zebra用向量的概念將命令和節點連線起來,乙個全域性向量cmdvec,指向整個命令結構,cmdvec的每個索引值都是...

tar命令的使用方法

tar命令的使用方法如下 tar cxtzjvfppn 檔案與目錄 引數說明 c 建立乙個打包檔案 x 解開乙個打包檔案 t 檢視 tar包裡面的檔案 z 打包後用gzip壓縮,生成.tar.gz檔案 j 打包後用zip2壓縮,生成.tar.bz2檔案 v 壓縮的過程中顯示檔案 f 使用檔名,請留意...