shell命令之nm

2024-05-27 16:58
文章标签 命令 shell nm

本文主要是介绍shell命令之nm,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

nm命令

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

linux@ubuntu:~/work/test$ nm libhello.a 1.o:
00000000 B a
00000000 T fun1U printf2.o:
00000000 T fun2U printf
linux@ubuntu:~/work/test$ nm  libhisi_ext.asample_comm_vi_ext.o:
00000000 t $a
00000058 t $a
000001dc t $a
00000000 d $d
00000000 r $d
00000038 t $d
000001bc t $d
00000000 b $d
0000025c t $d
00000010 N $d
000000e0 d DEV_ATTR_6114_720P_2MUX_BASE
00000070 d DEV_ATTR_BT656D1_2MUX
00000000 d DEV_ATTR_BT656D1_4MUXU HI_MPI_VB_CreatePoolU HI_MPI_VENC_AttachVbPool
000001dc T HI_MPI_VENC_CreateChn_ExtU HI_MPI_VI_EnableDevU HI_MPI_VI_SetDevAttrU SAMPLE_COMM_VI_SetMask
00000000 T SAMPLE_COMM_VI_StartDev_ext
0000007c r __FUNCTION__.11721
00000000 b m_vbhanleU memcpyU memsetU printf
linux@ubuntu:~/work/test$ nm -g --defined-only libhisi_ext.asample_comm_vi_ext.o:
000001dc T HI_MPI_VENC_CreateChn_Ext
00000000 T SAMPLE_COMM_VI_StartDev_ext
linux@ubuntu:~/work/test$ nm -g --undefined-only libhisi_ext.asample_comm_vi_ext.o:U HI_MPI_VB_CreatePoolU HI_MPI_VENC_AttachVbPoolU HI_MPI_VI_EnableDevU HI_MPI_VI_SetDevAttrU SAMPLE_COMM_VI_SetMaskU memcpyU memsetU printf

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

符号意义
AGlobal absolute 符号。
aLocal absolute 符号。
BGlobal bss 符号。
C该符号为common。common symbol是未初始话数据段。该符号没有包含于一个普通section中。只有在链接过程中才进行分配。符号的值表示该符号需要的字节数。例如在一个c文件中,定义int test,并且该符号在别的地方会被引用,则该符号类型即为C。否则其类型为B
bLocal bss 符号。
DGlobal data 符号。
dLocal data 符号。
f源文件名称符号。
G该符号也位于初始化数据段中。主要用于small object提高访问small data object的一种方式
TGlobal text 符号。
I该符号是对另一个符号的间接引用
tLocal text 符号。
U未定义符号。
RRead 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都是这种类型的符号
TText段的符号。子程序都是这种符号,比如文件中实现了一个函数function,则function就是这种符号
U未定义的符号。如果文件中引用了不存在的函数,则这些未定义的函数符号就是这种类型
Vweak object
WThe symbol is a weak symbol that has not been specifically tagged as a weak object symbol.
-该符号是a.out格式文件中的stabs symbol
S未初始化的符号,比如全局变量int s;则s的符号就是此类型

这篇关于shell命令之nm的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1008061

相关文章

shell脚本批量导出redis key-value方式

《shell脚本批量导出rediskey-value方式》为避免keys全量扫描导致Redis卡顿,可先通过dump.rdb备份文件在本地恢复,再使用scan命令渐进导出key-value,通过CN... 目录1 背景2 详细步骤2.1 本地docker启动Redis2.2 shell批量导出脚本3 附录总

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

C语言进阶(预处理命令详解)

《C语言进阶(预处理命令详解)》文章讲解了宏定义规范、头文件包含方式及条件编译应用,强调带参宏需加括号避免计算错误,头文件应声明函数原型以便主函数调用,条件编译通过宏定义控制代码编译,适用于测试与模块... 目录1.宏定义1.1不带参宏1.2带参宏2.头文件的包含2.1头文件中的内容2.2工程结构3.条件编

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查