nm命令的使用教程
nm 命令顯示關(guān)于指定 File 中符號的信息,文件可以是對象文件、可執(zhí)行文件或?qū)ο笪募?。下面跟著學(xué)習(xí)啦小編一起來了解一下nm 命令怎么用吧。
nm 命令用法詳解
用途
顯示有關(guān)對象文件、可執(zhí)行文件以及對象文件庫里的符號信息。
語法
nm [ -A ] [ -C ] [ -X {32|64|32_64|d64| any}] [ -f ] [ -h ] [ -l ] [ -p ] [ -r ] [ -T ] [ -v ] [ -B | -P] [ -e | -g | -u ] [ -d | -o | -x | -tFormat ] File ...
描述
nm 命令顯示有關(guān)指定 File 中符號的信息,文件可以是對象文件、可執(zhí)行文件或?qū)ο笪募臁?如果文件沒有包含符號信息,nm 命令報告該情況,但不將它解釋為出錯條件。nm 命令缺省情況下報告十進(jìn)制符號表示法下的數(shù)字值。
nm 命令將以下符號信息寫到標(biāo)準(zhǔn)輸出:
庫或?qū)ο竺?/p>
如果您指定了 -A 選項,那么 nm 命令 只報告與該文件有關(guān)的或者庫或者對象名。
符號名稱
符號類型
nm 命令使用以下符號(用同樣的字符表示弱符號作為全局符號)之一來表示文件符號類型:
項目 | 描述 |
---|---|
A | Global absolute 符號。 |
a | Local absolute 符號。 |
B | Global bss 符號。 |
b | Local bss 符號。 |
D | Global data 符號。 |
d | Local data 符號。 |
f | Source file name 符號。 |
L | Global thread-local 符號 (TLS)。 |
l | Static thread-local 符號 (TLS)。 |
T | Global text 符號。 |
t | Local text 符號。 |
U | Undefined 符號。 |
值
大小
如果可應(yīng)用,nm 命令報告與符號有關(guān)的大小。
標(biāo)志
項目 | 描述 |
---|---|
-A | 每行或者顯示完整路徑名或者顯示對象庫名。 |
-B |
在 Berkeley 軟件分發(fā) (BSD) 格式中顯示輸出:
|
-C |
限制解碼 (demangle) C++ 名稱。缺省是解碼所有 C++ 符號名。
注: C++ 對象文件中的符號在被使用前它們的名稱已經(jīng)被解碼了。
|
-d | 用十進(jìn)制顯示符號的值和大小。這是缺省值。 |
-e | 只顯示靜態(tài)的和外部的(全局)符號。 |
-f | 顯示完整的輸出,包括冗余的 .text、.data 以及 .bss 符號,這些在通常都是被限制的。 |
-g | 只顯示外部的(全局)符號。 |
-h | 限制輸出頭數(shù)據(jù)的顯示。 |
-l |
通過給 WEAK 符號的編碼鍵附加一個 * 來區(qū)分 WEAK 和 GLOBAL 符號。 如果和 -P 選項一起使用,WEAK 符號的符號類型顯示如下:
|
-o | 用八進(jìn)制而不是十進(jìn)制數(shù)來顯示符號的值和大小。 |
-P |
以標(biāo)準(zhǔn)可移植輸出格式顯示信息:
該格式以十六進(jìn)制符號表示法顯示數(shù)字值,除非您用 -t、-d 或 -o 標(biāo)志指定不同的格式。 如果您指定了 -A 標(biāo)志 -P 標(biāo)志只顯示庫/對象名字段。同樣,-P 標(biāo)志只顯示大小適用的符號大小字段。 |
-p | 不排序。輸出按符號表順序顯示。 |
-r | 倒序排序。 |
-t Format |
顯示指定格式下的數(shù)字值,其中 Format 參數(shù)是以下符號表示法之一:
|
-T | 將可能會溢出它的列的每個名稱截短,使顯示的名稱的最后一個字符是星號。 缺省情況下,nm 顯示列出的符號的全名,并且一個比為其設(shè)置的列的寬度長的名稱會引起名稱后的每個列無法對齊。 |
-u | 只顯示未定義符號。 |
-v | 按值而不是按字母表順序排序輸出。 |
-x | 用十六進(jìn)制而不是十進(jìn)制數(shù)來顯示符號的值和大小。 |
-X mode |
指定 nm 應(yīng)該檢查的對象文件的類型。 mode 必須是下列之一:
缺省值為處理 32 位對象文件(忽略 64 位對象)。mode 也可用 OBJECT_MODE 環(huán)境變量來設(shè)置。例如,OBJECT_MODE=64 使nm 處理任何 64 位對象并且忽略 32 位對象。-X 標(biāo)志覆蓋了 OBJECT_MODE 變量。 |
注: nm 命令支持 —(雙連字符)標(biāo)志。如果文件名會被曲解為一個選項,該標(biāo)志區(qū)別于 File 操作數(shù)。 例如,要指定文件名以連字符開始,請使用 — 標(biāo)志。
退出狀態(tài)
此命令返回以下退出值:
項目 | 描述 |
---|---|
0 | 成功完成。 |
>0 | 發(fā)生錯誤。 |
示例
要列出 a.out 對象文件的靜態(tài)和外部符號,請輸入:
nm -e a.out
要以十六進(jìn)制顯示符號大小和值并且按值排序符號,請輸入:
nm -xv a.out
要顯示 libc.a 中所有 64 位對象符號,忽略所有 32 位對象:
nm -X64 /usr/lib/libc.a
用途
顯示有關(guān)對象文件、可執(zhí)行文件以及對象文件庫里的符號信息。
語法
nm [ -A ] [ -C ] [ -X {32|64|32_64|d64| any}] [ -f ] [ -h ] [ -l ] [ -p ] [ -r ] [ -T ] [ -v ] [ -B | -P] [ -e | -g | -u ] [ -d | -o | -x | -tFormat ] File ...
描述
nm 命令顯示有關(guān)指定 File 中符號的信息,文件可以是對象文件、可執(zhí)行文件或?qū)ο笪募臁?如果文件沒有包含符號信息,nm 命令報告該情況,但不將它解釋為出錯條件。nm 命令缺省情況下報告十進(jìn)制符號表示法下的數(shù)字值。
nm 命令將以下符號信息寫到標(biāo)準(zhǔn)輸出:
庫或?qū)ο竺?/p>
如果您指定了 -A 選項,那么 nm 命令 只報告與該文件有關(guān)的或者庫或者對象名。
符號名稱
符號類型
nm 命令使用以下符號(用同樣的字符表示弱符號作為全局符號)之一來表示文件符號類型:
項目 | 描述 |
---|---|
A | Global absolute 符號。 |
a | Local absolute 符號。 |
B | Global bss 符號。 |
b | Local bss 符號。 |
D | Global data 符號。 |
d | Local data 符號。 |
f | Source file name 符號。 |
L | Global thread-local 符號 (TLS)。 |
l | Static thread-local 符號 (TLS)。 |
T | Global text 符號。 |
t | Local text 符號。 |
U | Undefined 符號。 |
值
大小
如果可應(yīng)用,nm 命令報告與符號有關(guān)的大小。
標(biāo)志
項目 | 描述 |
---|---|
-A | 每行或者顯示完整路徑名或者顯示對象庫名。 |
-B |
在 Berkeley 軟件分發(fā) (BSD) 格式中顯示輸出:
|
-C |
限制解碼 (demangle) C++ 名稱。缺省是解碼所有 C++ 符號名。
注: C++ 對象文件中的符號在被使用前它們的名稱已經(jīng)被解碼了。
|
-d | 用十進(jìn)制顯示符號的值和大小。這是缺省值。 |
-e | 只顯示靜態(tài)的和外部的(全局)符號。 |
-f | 顯示完整的輸出,包括冗余的 .text、.data 以及 .bss 符號,這些在通常都是被限制的。 |
-g | 只顯示外部的(全局)符號。 |
-h | 限制輸出頭數(shù)據(jù)的顯示。 |
-l |
通過給 WEAK 符號的編碼鍵附加一個 * 來區(qū)分 WEAK 和 GLOBAL 符號。 如果和 -P 選項一起使用,WEAK 符號的符號類型顯示如下:
|
-o | 用八進(jìn)制而不是十進(jìn)制數(shù)來顯示符號的值和大小。 |
-P |
以標(biāo)準(zhǔn)可移植輸出格式顯示信息:
該格式以十六進(jìn)制符號表示法顯示數(shù)字值,除非您用 -t、-d 或 -o 標(biāo)志指定不同的格式。 如果您指定了 -A 標(biāo)志 -P 標(biāo)志只顯示庫/對象名字段。同樣,-P 標(biāo)志只顯示大小適用的符號大小字段。 |
-p | 不排序。輸出按符號表順序顯示。 |
-r | 倒序排序。 |
-t Format |
顯示指定格式下的數(shù)字值,其中 Format 參數(shù)是以下符號表示法之一:
|
-T | 將可能會溢出它的列的每個名稱截短,使顯示的名稱的最后一個字符是星號。 缺省情況下,nm 顯示列出的符號的全名,并且一個比為其設(shè)置的列的寬度長的名稱會引起名稱后的每個列無法對齊。 |
-u | 只顯示未定義符號。 |
-v | 按值而不是按字母表順序排序輸出。 |
-x | 用十六進(jìn)制而不是十進(jìn)制數(shù)來顯示符號的值和大小。 |
-X mode |
指定 nm 應(yīng)該檢查的對象文件的類型。 mode 必須是下列之一:
缺省值為處理 32 位對象文件(忽略 64 位對象)。mode 也可用 OBJECT_MODE 環(huán)境變量來設(shè)置。例如,OBJECT_MODE=64 使nm 處理任何 64 位對象并且忽略 32 位對象。-X 標(biāo)志覆蓋了 OBJECT_MODE 變量。 |
注: nm 命令支持 —(雙連字符)標(biāo)志。如果文件名會被曲解為一個選項,該標(biāo)志區(qū)別于 File 操作數(shù)。 例如,要指定文件名以連字符開始,請使用 — 標(biāo)志。
退出狀態(tài)
此命令返回以下退出值:
項目 | 描述 |
---|---|
0 | 成功完成。 |
>0 | 發(fā)生錯誤。 |
示例
要列出 a.out 對象文件的靜態(tài)和外部符號,請輸入:
nm -e a.out
要以十六進(jìn)制顯示符號大小和值并且按值排序符號,請輸入:
nm -xv a.out
要顯示 libc.a 中所有 64 位對象符號,忽略所有 32 位對象:
nm -X64 /usr/lib/libc.a