nm 命令输出项解析

 
  
0

Linux下的nm命令详解

nm命令的输出包含三个部分:1 符号值。默认显示十六进制,也可以指定; 2 符号类型。小写表示是本地符号,大写表示全局符号(external); 3 符号名称。 给个例子:
00000000 b .bss
00000000 d .data
00000000 r .rdata
00000000 t .text
         U ___main
00000000 T _add
0000000d T _main
00000000 D _num1
00000004 D _num2
                 U _printf
其中符号名称的含义:
A 符号值是绝对的。在进一步的连接中,不会被改变。

B 符号位于未初始化数据段(known as BSS).

C 共用(common)符号. 共用符号是未初始化的数据。在连接时,多个共用符号可能采用一个同样的名字,如果这个符号在某个地方被定义,共用符号被认为是未定义的引用.

D 已初始化数据段的符号

G 已初始化数据段中的小目标(small objective)符号. 一些目标文件格式允许更有效的访问小目标数据,比如一个全局的int变量相对于一个大的全局数组。

I 其他符号的直接应用,这是GNU扩展的,很少用了. N 调试符号.

R 只读数据段符号. S 未初始化数据段中的小目标(small object)符号.

T 代码段的符号.

U 未定义符号.

V 弱对象(weak object)符号. 当一个已定义的弱符号被连接到一个普通定义符号,普通定义符号可以正常使用,当一个未定义的弱对象被连接到一个未定义的符号,弱符号的值为0.

W 一个没有被指定一个弱对象符号的弱符号(weak symbol)。 - a.out目标文件中的刺符号(stabs symbol). 这种情况下,打印的下一个值是其他字段,描述字段,和类型。刺符号用于保留调试信息.

? 未知符号类型,或者目标文件特有的符号类型.

命令参数
-tradix  --radix=radix符号值得进制。d 十进制, o 八进制, x 十六进制.

-D  --dynamic显示动态符号,只在对象是动态时有用.

-fformat  --format=format输出的格式,有"bsd","sysv" 或"posix"可选。默认是“bsd”.

-g  --extern-only只显示外部符号.

-l  --line-numbers对每一个符号,使用调试信息去查找文件名和行号。

-u  --undefined-only只显示未定义的符号.

--defined-only只显示已定义的符号.--help

你可能感兴趣的:(nm 命令输出项解析)