2008年2月28日 星期四

Linux Shell腳本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)


REF:http://hon0612.blogspot.com/2007/09/linux-shellldd.html

沒有留言: