ldd輸出解釋

2021-10-10 09:49:10 字數 1292 閱讀 1440

root@laptop

-2mois3pq:

/home/li# ldd `which ls`

linux-vdso.so.1(

0x00007fffd7cf7000

) libselinux.so.

1=>

/lib/x86_64-linux-gnu/libselinux.so.1(

0x00007fbc41220000

) libc.so.

6=>

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

0x00007fbc40e20000

) libpcre.so.

3=>

/lib/x86_64-linux-gnu/libpcre.so.3(

0x00007fbc40ba0000

) libdl.so.

2=>

/lib/x86_64-linux-gnu/libdl.so.2(

0x00007fbc40990000

)/lib64/ld-linux-x86-

64.so.2(

0x00007fbc41800000

) libpthread.so.

0=>

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

0x00007fbc40770000

)

可以看到,第一行與倒數第二行的格式與其他行不一樣,沒有=>這個箭頭,同時,倒數第二行的so帶的是絕對路徑,其他行卻不是,下面來解釋一下:

第一行的linux-vdso.so.1,名字是虛擬動態共享庫,他其實是核心負責自動對映到使用者程序空間的,這個檔案存在核心空間中,檔案系統中並不能找到這個檔案(我在本地是沒有find到,核心從**載入的呢?未知,可能是直接作為核心模組進去的),這個動態庫主要的功能是減小系統呼叫的開銷,例如一些函式呼叫會使程序進入核心態,讀取一些資料等,進入核心態的開銷是很大的,所以一些常用的函式呼叫結果,可以從這個位址空間中直接讀取,避免了陷入核心態。

第二行的/lib64/ld-linux-x86-64.so.2寫的是全路徑,跟其他的庫寫法也不同,後面沒有=>,這裡先解釋一下=>是什麼意思,這代表動態庫在檔案系統中的位置,這是因為載入動態庫時,二進位制檔案中本身並沒有寫全路徑,所以需要鏈結器去在一些目錄中搜尋(ld_library_path,這個環境變數就可以提供,當然不止這乙個),這個庫就是鏈結器本身,他負責找其他庫,所以在二進位制檔案中他是硬編碼的,寫好了路徑,所以他不再需要到檔案系統中尋找。

LDD3 中 awk 語句的解釋

在 ldd3 的乙個建立節點的 shell 指令碼中,用到了 awk文字處理工具,在這裡做一下解釋。原句 major awk 2 module proc devices module 變數在指令碼中定義為 scull.proc devices 是awk 要處理的輸入檔案。2,1,分別代表輸入檔案中的...

vmstat輸出項解釋

輸出項的解釋如下 procs r列表示執行和等待cpu時間片段的程序數,這個值如果長期大約系統cpu個數,說明cpu不足 b列表示在等待資源的程序數,比如正在等待io或者記憶體交換等等 memory swap列表示切換到交換區的記憶體大小 kb為單位 如果swap的值不為0或者比較大,只要si和so...

vmstat輸出項解釋

輸出項的解釋例如以下 procs r列表示執行和等待cpu時間片段的程序數,這個值假設長期大約系統cpu個數。說明cpu不足 b列表示在等待資源的程序數。比方正在等待io或者記憶體交換等等 memory swap列表示切換到交換區的記憶體大小 kb為單位 假設swap的值不為0或者比較大,僅僅要si...