nm命令介紹

2021-06-17 00:08:31 字數 1162 閱讀 6515

nm命令

**:它用來列出乙個目標檔案中的各種符號。

nm命令還是比較簡單而且強大的。它用來列出乙個目標檔案中的各種符號。符號的種類很多,以下是一些常見的符號型別

nm輸出字元含義r

read only symbol. 比如在**中有乙個const maxdata = 3095; 則maxdata就是乙個read only symbol

n這是乙個除錯符號

d這是乙個已經初始化的變數的符號。比如**中int i = 1和char *str = "hello"則i和str都是這種型別的符號

ttext段的符號。子程式都是這種符號,比如檔案中實現了乙個函式function,則function就是這種符號

u未定義的符號。如果檔案中引用了不存在的函式,則這些未定義的函式符號就是這種型別

s未初始化的符號,比如全域性變數int s;則s的符號就是此型別

nm命令的詳細用法以及例子見正文。

#include

static int s_global;

int i = 1;

char *str = "hello, world";

const id = 10;

extern int e_global;

void function()

int get_x()

在執行"gcc -g -o -c a.c"產生a.o之後,用"nm -a a.o"的輸出為:

a.o:00000000 r id

a.o:00000000 t function

a.o:00000014 t get_x

a.o:00000000 d i

a.o:         u printf

a.o:00000000 b s_global

a.o:00000004 d str

nm的用法很簡單,以下幾個關鍵字比較常用:

這在同時列出多個檔案(比如乙個鏈結庫)的符號時比較有用

這將會把除錯符號也列出來。預設狀態下除錯符號不會被列出。

指定這個引數後,nm將利用除錯資訊找出檔名以及符號的行號。對於乙個已定義符號,將會找出這個符號定義的行號,對於未定義符號,顯示為空

預設是按符號名稱的字母順序排序的

同"--undefined-only", 而"--defined-only"將只列出已定義符號

ar命令和nm命令

2008 11 19 09 49 ar create,modify and extract from archive nm list symbol from obj files 可以檢視動態庫中都有些什麼函式 當我們的程式中有經常使用的模組,而且這種模組在其他程式中也會用到,這時按照軟體重用的思想,...

AR命令和NM命令

ar create,modify and extract from archive nm list symbol from obj files 可以檢視動態庫中都有些什麼函式 當我們的程式中有經常使用的模組,而且這種模組在其他程式中也會用到,這時按照軟體重用的思想,我們應該將它們生成庫,使得以後程式...

Linux 命令(1) nm 命令

nm是names的縮寫,nm命令主要是用來檢視檔案中的符號資訊。可以檢視的檔案包括 庫檔案 目標檔案 main.o 可執行檔案等。nm option file 如果未指定檔名,預設為a.out。a debug syms 這將會把除錯符號也列出來。預設狀態下除錯符號不會被列出。g extern onl...