ldd命令 ubuntu Linux命令 ldd

2021-10-17 05:52:40 字數 1516 閱讀 6751

1、ldd不是乙個可執行程式,而是乙個shell指令碼。

zlf@ubuntu:~/$ whichldd/usr/bin/ldd

zlf@ubuntu:~/$ file /usr/bin/ldd/usr/bin/ldd: bourne-again shell script, ascii text executable

2、ldd能夠顯示可執行模組的dependency,其原理是通過設定一系列的環境變數,如:ld_trace_loaded_objects、ld_warn、ld_bind_now、ld_library_version、 ld_verbose等。當ld_trace_loaded_objects環境變數不為空時,任何可執行程式在執行時,它都會只顯示模組的 dependency,而程式並不真正執行。比如:

export ld_trace_loaded_objects

無效。而

zlf@ubuntu:~/$ export ld_trace_loaded_objects=

或zlf@ubuntu:~/$ export ld_trace_loaded_objects=1

或zlf@ubuntu:~/$ export ld_trace_loaded_objects=0

均可使其生效,執行ls命令顯示如下:

zlf@ubuntu:~/$ lslinux-gate.so.1 => (0xb77b2000)

libselinux.so.1 => /lib/i386-linux-gnu/libselinux.so.1 (0xb777a000)

librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb7771000)

libacl.so.1 => /lib/i386-linux-gnu/libacl.so.1 (0xb7767000)

libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75bd000)

libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb75b8000)/lib/ld-linux.so.2 (0xb77b3000)

libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb759d000)

libattr.so.1 => /lib/i386-linux-gnu/libattr.so.1 (0xb7597000)

撤銷環境變數:

zlf@ubuntu:~/$ unset ld_trace_loaded_objects

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命令詳解

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

ldd命令與readelf命令

一般我們看乙個可執行檔案需要鏈結那些庫,我們可以使用ldd命令 比如這個是我ldd乙個可執行程式的結果。的左邊是需要鏈結的.so,右邊是系統的相應的位置。如果發現右邊沒有,實際上自己是有這個庫的,可以軟鏈結一下。比如 ln s 原始檔 目標檔案ldd 可以加上引數 v 參看鏈結庫的詳細資訊 ldd ...

ldd命令原理與使用

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