原文連結
用途
顯示關於對象檔案、可執行檔以及對象檔案庫裡的符號資訊。
文法
nm [ -A ] [ -C ] [ -X {32|64|32_64}] [ -f ] [ -h ] [ -l ] [ -p ] [ -r ] [ -T ] [ -v ] [ -B | -P ] [ -e | -g | -u ] [ -d | -o | -x | -tFormat ] File ...
描述
nm 命令顯示關於指定 File 中符號的資訊,檔案可以是對象檔案、可執行檔或對象檔案庫。 如果檔案沒有包含符號資訊,nm 命令報告該情況,但不把它解釋為出錯條件。 nm 命令預設情況下報告十進位符號標記法下的數字值。
nm 命令把以下符號資訊寫入標準輸出:
標誌
| -A |
每行或者顯示全路徑名稱或者顯示物件程式庫名。 |
| -B |
在 Berkeley 軟體分發(BSD)格式中顯示輸出: 值 類型 名稱 |
| -C |
限制解碼(demangle) C++ 名稱。預設是解碼所有 C++ 符號名。注:C++ 對象檔案中的符號在被使用前它們的名稱已經被解碼了。 |
| -d |
用十進位顯示符號的值和大小。這是預設的。 |
| -e |
只顯示靜態和外部的(全域)符號。 |
| -f |
顯示完整的輸出,包括冗餘的 .text、 .data 以及 .bss 符號,這些在通常都是被限制的。 |
| -g |
只顯示外部的(全域)符號。 |
| -h |
限制輸出頭資料的顯示。 |
| -l |
通過給 WEAK 符號的編碼鍵附加一個 * 來區分 WEAK 和 GLOBAL 符號。 如果和 -P 選項一起使用, WEAK 符號的符號類型顯示如下:
-
V
-
Weak Data 符號
-
W
-
Weak Text 符號
-
w
-
Weak 未定義符號
-
Z
-
Weak bss 符號
|
| -o |
用八進位而不是十進位數來顯示符號的值和大小。 |
| -P |
以標準可移植輸出格式顯示資訊: 庫/對象名 名稱 類型 值 大小 該格式以十六進位符號標記法顯示數字值,除非您用 -t、-d 或 -o 標誌指定不同的格式。 如果您指定了 -A 標誌 -P 標誌只顯示 庫/對象名欄位。同樣,-P 標誌只顯示大小適用的符號大小欄位。 |
| -p |
不排序。輸出按符號表順序列印。 |
| -r |
倒序排序。 |
| -T |
把可能會溢出它的列的每個名字截短,使顯示的名字的最後一個字元是星號(*)。 預設情況下,nm 顯示列出的符號的全名,並且一個比為其設定的列的寬度長的名稱會引起名稱後的每個列無法對齊。 |
| -t Format |
顯示指定格式下的數字值,其中 Format 參數是以下符號標記法之一:
-
d
-
十進位符號標記法。這是 nm 命令的預設格式。
-
o
-
八進位符號標記法。
-
x
-
十六進位符號標記法。
|
| -u |
只顯示未定義符號。 |
| -v |
按值而不是按字母表順序排序輸出。 |
| -x |
用十六進位而不是十進位數來顯示符號的值和大小。 |
| -X mode |
指定 nm 應該檢查的對象檔案的類型。 mode 必須是下列之一:
-
32
-
只處理 32 位對象檔案
-
64
-
只處理 64 位元對象檔案
-
32_64
-
處理 32 位和 64 位元對象檔案
預設是處理 32 位對象檔案(忽略 64 位元對象)。 mode 也可以 OBJECT_MODE 環境變數來設定。例如,OBJECT_MODE=64 使 nm 處理任何 64 位元對象並且忽略 32 位對象。 -X 標誌覆蓋 OBJECT_MODE 變數。 |
注:nm 命令支援 -- (雙連字號)標誌。如果檔案名稱會被曲解為一個選項,該標誌區別於 File 運算元。 例如,要指定檔案名稱以連字號開始,請使用 -- 標誌。
退出狀態
該命令返回下列出口值:
樣本
- 列出 a.out 對象檔案的靜態和外部符號,請輸入:
nm -e a.out
- 以十六進位顯示符號大小和值並且按值排序符號,請輸入:
nm -xv a.out
- 顯示 libc.a 中所有 64 位元對象符號,忽略所有 32 位對象:
nm -X64 /usr/lib/libc.a