查看静态库(.a)、可执行文件(.out、.o)里的符号信息--nm命令

应用场景:

对于可执行文件和静态库文件,我们无法直接打开查看源码,因为打开后都是乱码。但是有时候我们有想知道文件包含哪些符号信息,比如函数、变量等等,这时候nm命令就派上用长,这里只是介绍nm常用的用法,详细的用法请另外查询。

nm命令用法:nm + 目标文件

nm libexample.a > a.txt //将libexample.a的符号信息保存在a.txt文件里,可用cat命令查看
nm libexample.a //直接在终端打印出库包含的符号信息

信息的解读:

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
解析:T是代码段,全局的链接属性,一般修饰函数名(add 、main),并且函数可以被外部引用,如果是 t 修饰的函数名,则函数用了static关键字进行修饰,是不能被外部应用的。U是表示未定义的符号,这里只是引用,具体的实现是在其他文件。至于其他的符号这里不一一解读,有需要自行去查询。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正在起飞的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值