Linux 檢視檔案符號表

2021-10-04 20:33:47 字數 630 閱讀 1006

功能

列出.o .a .so中的符號資訊,包括諸如符號的值,符號型別及符號名稱等。所謂符號,通常指定義出的函式,全域性變數等等。

使用nm [options] filename

可用的options:

a 該符號的值在今後的鏈結中將不再改變;

b 該符號放在bss段中,通常是那些未初始化的全域性變數;

d 該符號放在普通的資料段中,通常是那些已經初始化的全域性變數;

t 該符號放在**段中,通常是那些全域性非靜態函式;

u 該符號未定義過,需要自其他物件檔案中鏈結進來;

w 未明確指定的弱鏈結符號;同鏈結的其他物件檔案中有它的定義就用上,否則就用乙個系統特別指定的預設值。

注意幾點:

-c 總是適用於c++編譯出來的物件檔案。還記得c++中有過載麼?為了區分過載函式,c++編譯器會將函式返回值/引數等資訊附加到函式名稱中去形成乙個mangle過的符號,那用這個選項列出符號的時候,做乙個逆操作,輸出那些原始的、我們可理解的符號名稱。

使用 -l 時,必須保證你的物件檔案中帶有符號調式資訊,這一般要求你在編譯的時候指定乙個 -g 選項,見 linux:gcc。

使用nm前,最好先用linux:file檢視物件檔案所屬處理器架構,然後再用相應交叉版本的nm工具。

linux核心符號表

所謂核心符號表就是在核心內部函式或變數中可供外部引用的函式和變數的符號表。在 2.6 核心下,使用以下命令可以看到核心符號表 引用 beyes linux beyes cat proc kallsyms more c0100000 t text c0100000 t startup 32 c0100...

linux核心符號表

所謂核心符號表就是在核心內部函式或變數中可供外部引用的函式和變數的符號表。在 2.6 核心下,使用以下命令可以看到核心符號表 引用 beyes linux beyes cat proc kallsyms more c0100000 t text c0100000 t startup 32 c0100...

Linux核心符號表

1 形成過程 linux核心符號表 proc kallsyms 的形成過程 1 scripts kallsyms.c負責生成system.map 2 kernel kallsyms.c負責生成 proc kallsyms 3 scripts kallsyms.c解析 vmlinux tmp vmli...