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 使用檔名,請留意...