每天回顧linux命令(ldd)

2021-08-10 10:47:43 字數 4643 閱讀 4166

ldd命令

ldd命令用於列印程式或者庫檔案所依賴的動態庫列表。

語法

ldd (選項) (引數)

選項

root@68

fc0a9bc6dd:/home/wzm/go/src# ldd ldd.so

linux-vdso.so.1

=> (0x00007ffc2d3de000)

libpthread.so.0

=> /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe750662000)

libc.so.6

=> /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe750298000)

/lib64/ld-linux-x86-64.so.2 (0x00007fe750d0e000)

root@68

fc0a9bc6dd:/home/wzm/go/src# ldd -v ldd.so

linux-vdso.so.1

=> (0x00007ffeea18c000)

libpthread.so.0

=> /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f90c4224000)

libc.so.6

=> /lib/x86_64-linux-gnu/libc.so.6 (0x00007f90c3e5a000)

/lib64/ld-linux-x86-64.so.2 (0x00007f90c48d0000)

version information:

./ldd.so:

libpthread.so.0

(glibc_2.3

.2) => /lib/x86_64-linux-gnu/libpthread.so.0

libpthread.so.0

(glibc_2.2

.5) => /lib/x86_64-linux-gnu/libpthread.so.0

libc.so.6

(glibc_2.4) => /lib/x86_64-linux-gnu/libc.so.6

libc.so.6

(glibc_2.3

.4) => /lib/x86_64-linux-gnu/libc.so.6

libc.so.6

(glibc_2.2

.5) => /lib/x86_64-linux-gnu/libc.so.6

/lib/x86_64-linux-gnu/libpthread.so.0:

ld-linux-x86-64.so.2

(glibc_2.2

.5) => /lib64/ld-linux-x86-64.so.2

ld-linux-x86-64.so.2

(glibc_private) => /lib64/ld-linux-x86-64.so.2

libc.so.6

(glibc_2.14) => /lib/x86_64-linux-gnu/libc.so.6

libc.so.6

(glibc_2.3

.2) => /lib/x86_64-linux-gnu/libc.so.6

libc.so.6

(glibc_2.2

.5) => /lib/x86_64-linux-gnu/libc.so.6

libc.so.6

(glibc_private) => /lib/x86_64-linux-gnu/libc.so.6

/lib/x86_64-linux-gnu/libc.so.6:

ld-linux-x86-64.so.2

(glibc_2.3) => /lib64/ld-linux-x86-64.so.2

ld-linux-x86-64.so.2

(glibc_private) => /lib64/ld-linux-x86-64.so.2

-u:列印未使用的直接依賴

root@68fc0a9bc6dd

:/home/wzm/go/src

# ldd myldd

linux-vdso.so.1 => (0x00007ffe913c9000)

libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc86c5dd000)

libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc86c3c0000)

libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc86bff6000)

/lib64/ld-linux-x86-64.so.2 (0x00007fc86c7e1000)

root@68fc0a9bc6dd

:/home/wzm/go/src

# ldd -u myldd

root@68fc0a9bc6dd

:/home/wzm/go/src

#

-d:執行重定位和報告任何丟失的物件。(預設帶該值)

-r:執行資料物件和函式重定位,並且報告任何任何丟失的物件和函式。

root@68fc0a9bc6dd

:/home/wzm/go/src

# ldd myldd

linux-vdso.so.1 => (0x00007ffd013bd000)

libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fd68a397000)

libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd68a17a000)

libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd689db0000)

/lib64/ld-linux-x86-64.so.2 (0x00007fd68a59b000)

root@68fc0a9bc6dd

:/home/wzm/go/src

# ldd -r myldd

linux-vdso.so.1 => (0x00007ffe7e123000)

libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fd585612000)

libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd5853f5000)

libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd58502b000)

/lib64/ld-linux-x86-64.so.2 (0x00007fd585816000)

引數

檔案:需要使用動態庫的可執行程式或者動態庫檔案

ldd介紹

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

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

root@68fc0a9bc6dd

:/home/wzm/go/src

# export ld_trace_loaded_objects=1

root@68fc0a9bc6dd

:/home/wzm/go/src

# ls

linux-vdso.so.1 => (0x00007ffe2ad9a000)

libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f5a9c6d4000)

libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5a9c30a000)

libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f5a9c09a000)

libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5a9be96000)

/lib64/ld-linux-x86-64.so.2 (0x00007f5a9c8f6000)

libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5a9bc79000)

ldd顯示可執行模組的依賴的工作原理,其實是通過ld-linux.so(elf動態庫的裝置器)來實現的。ld-linux.so模組會先於executable模組程式工作,並獲得控制權,因此當上述的環境變數被設定時,ld-linux.so選擇顯示可執行模組的dependency。

也可以直接執行ld-linux.so模組。

每天回顧linux命令(wc)

wc命令 wc命令用來計算數字。利用wc指令可以計算檔案的位元組數 字數或列數,若不在指定檔名,或所指定給予的檔名為 則wc指令會從表中輸入裝置讀取資料。語法 wc 選項 引數 選項 c或 bytes或 char 只顯示位元組數 l或 lines 只顯示列數 w或 words 只顯示字數 引數 檔案...

每天回顧linux命令(which)

which命令 which命令用於查詢並顯示給定命令的絕對路徑,環境變數path中儲存了查詢命令時需要遍歷的目錄。which目錄會在環境變數 path設定的目錄裡查詢符合條件的檔案。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪個乙個位置的命令。語法 which 選...

每天回顧linux命令(sort)

sort命令 sort命令在linux裡非常有用,它將檔案進行排序,並將排序解雇標準輸出。sort命令既可以從特定檔案,也可以從stdin獲取輸入。語法 sort 選項 引數 選項 b 忽略每行前面開始的空格符。root 68fc0a9bc6dd home wzm testsort sort sor...