linux nm命令

功能

nm是names的简称,通过该指令可以列举文件中的符号(一般是库文件),因为很多时候我们并不首要关注库逻辑实现,只需要知道某些函数或变量的命名冲突等问题,这个时候就可以使用nm命令,当然,类似的命令还有其他的,这里我只讲nm。

Usage: nm [option(s)] [file(s)]
 List symbols in [file(s)] (a.out by default).
 The options are:
  -a, --debug-syms       只显示调试信息
  -A, --print-file-name   在每行符号信息前,打印查询的文件名
  -C, --demangle[=STYLE] 将低级别的符号名称转换为用户级别的名称,意思是转换为用户较容易理解的形式
  -D, --dynamic          显示动态符号信息
  -f, --format=FORMAT    设置信息输出格式. 它可以是`bsd',`sysv' 或者 `posix'. 默认为 `bsd'
  -g, --extern-only      只显示外部符号;封装成动态库时,需要被外部调用的函数必须是外部符号,否则无法使用
  -l, --line-numbers     显示每个符号的文件名和行号
  -n, --numeric-sort     将符号按地址排序
  -r, --reverse-sort     反向排序
  -S, --print-size       显示定义符号的大小
  -u, --undefined-only   仅显示未定义符号
  -X 32_64               (ignored)

一般显示格式

值(the symbol value)、类型(the symbol type)、名字(the symbol name) 

类型

nm 将找到的符号值使用十六进制缺省表示,并在函数前添加其类型,类型主要有:

描述
A符号绝对,链接过程不允许被改变
B/b非初始化符号,出现在bss段中
C公有符号,链接时会被同名符号覆盖
D/d初始化符号
G/g初始化符号,面向小数据访问优化
I其它符号的间接引用
N调试符号
P栈区符号(清空)
R/r符号只读
S/s非初始化符号,面向小数据访问优化
T/t代码区符号
U未定义或在外部定义的符号
u全局唯一,GNU保留符
V/v弱定义符(详见C++强弱符号定义)
W/w弱符号,但是还没有被弱对象定义
-stabs格式符号
?无法识别的符号

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值