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...