博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell命令之nm
阅读量:4286 次
发布时间:2019-05-27

本文共 2452 字,大约阅读时间需要 8 分钟。

nm命令

http://blog.chinaunix.net/uid-7749031-id-2044727.html

linux@ubuntu:~/work/test$ nm libhello.a 1.o:00000000 B a00000000 T fun1         U printf2.o:00000000 T fun2         U printflinux@ubuntu:~/work/test$ nm  libhisi_ext.asample_comm_vi_ext.o:00000000 t $a00000058 t $a000001dc t $a00000000 d $d00000000 r $d00000038 t $d000001bc t $d00000000 b $d0000025c t $d00000010 N $d000000e0 d DEV_ATTR_6114_720P_2MUX_BASE00000070 d DEV_ATTR_BT656D1_2MUX00000000 d DEV_ATTR_BT656D1_4MUX         U HI_MPI_VB_CreatePool         U HI_MPI_VENC_AttachVbPool000001dc T HI_MPI_VENC_CreateChn_Ext         U HI_MPI_VI_EnableDev         U HI_MPI_VI_SetDevAttr         U SAMPLE_COMM_VI_SetMask00000000 T SAMPLE_COMM_VI_StartDev_ext0000007c r __FUNCTION__.1172100000000 b m_vbhanle         U memcpy         U memset         U printflinux@ubuntu:~/work/test$ nm -g --defined-only libhisi_ext.asample_comm_vi_ext.o:000001dc T HI_MPI_VENC_CreateChn_Ext00000000 T SAMPLE_COMM_VI_StartDev_extlinux@ubuntu:~/work/test$ nm -g --undefined-only libhisi_ext.asample_comm_vi_ext.o:         U HI_MPI_VB_CreatePool         U HI_MPI_VENC_AttachVbPool         U HI_MPI_VI_EnableDev         U HI_MPI_VI_SetDevAttr         U SAMPLE_COMM_VI_SetMask         U memcpy         U memset         U printf

输出信息符号对照表(参照 man nm)

符号 意义
A Global absolute 符号。
a Local absolute 符号。
B Global bss 符号。
C 该符号为common。common symbol是未初始话数据段。该符号没有包含于一个普通section中。只有在链接过程中才进行分配。符号的值表示该符号需要的字节数。例如在一个c文件中,定义int test,并且该符号在别的地方会被引用,则该符号类型即为C。否则其类型为B
b Local bss 符号。
D Global data 符号。
d Local data 符号。
f 源文件名称符号。
G 该符号也位于初始化数据段中。主要用于small object提高访问small data object的一种方式
T Global text 符号。
I 该符号是对另一个符号的间接引用
t Local text 符号。
U 未定义符号。
R Read only symbol. 比如在代码中有一个const MAXDATA = 3095; 则MAXDATA就是一个Read only symbol . 该符号位于只读数据区。例如定义全局const int test[] = {123, 123};则test就是一个只读数据区的符号。注意在cygwin下如果使用gcc直接编译成MZ格式时,源文件中的test对应_test,并且其符号类型为D,即初始化数据段中。但是如果使用m6812-elf-gcc这样的交叉编译工具,源文件中的test对应目标文件的test,即没有添加下划线,并且其符号类型为R。一般而言,位于rodata section。值得注意的是,如果在一个函数中定义const char *test = “abc”, const char test_int = 3。使用nm都不会得到符号信息,但是字符串“abc”分配于只读存储器中,test在rodata section中,大小为4。
N 这是一个调试符号
D 这是一个已经初始化的变量的符号。比如代码中int i = 1和char *str = "Hello"则i和str都是这种类型的符号
T Text段的符号。子程序都是这种符号,比如文件中实现了一个函数function,则function就是这种符号
U 未定义的符号。如果文件中引用了不存在的函数,则这些未定义的函数符号就是这种类型
V weak object
W The symbol is a weak symbol that has not been specifically tagged as a weak object symbol.
- 该符号是a.out格式文件中的stabs symbol
S 未初始化的符号,比如全局变量int s;则s的符号就是此类型

转载地址:http://ovigi.baihongyu.com/

你可能感兴趣的文章
hbase 常用过滤器filter--------------------------有这篇文章就够了,舍我其谁!!!!
查看>>
【十问评估经营理念】
查看>>
Android调用天气预报的WebService简单例子
查看>>
出现An internal error occurred during: "Building workspace".的解决方法
查看>>
ext4.2入门简单小例子(button的事件--对话框的几种使用情况)
查看>>
nodejs:在windows系统中安装node.js 及第一个程序Hello World
查看>>
ExtJS 4.2心得和总结:布局系统详解(Ext.layout.container)
查看>>
数据结构几种排序算法详解和总结(java版)
查看>>
ExtJS4.2 登陆表单(Login)简单示例
查看>>
Node.js快速入门
查看>>
Node.js进行Web开发(一)--Express,路由控制,模板引擎
查看>>
阿里巴巴集团2014秋季校园招聘笔试题
查看>>
2014校园招聘_百度2014校园招聘
查看>>
2014校园招聘_华为2014校园招聘
查看>>
2014校园招聘_腾讯2014校园招聘
查看>>
ExtJs4.2学习--Ext.tab.Panel 选项卡
查看>>
mybatis+spring+struts2框架整合
查看>>
你真正理解java的字符类型了吗?(bit,byte,short,int等字符类型)
查看>>
数据挖掘开源软件:WEKA基础操作
查看>>
Python一些容易忽略的知识
查看>>