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

相关文章

postgresql数据库基本操作及命令详解

《postgresql数据库基本操作及命令详解》本文介绍了PostgreSQL数据库的基础操作,包括连接、创建、查看数据库,表的增删改查、索引管理、备份恢复及退出命令,适用于数据库管理和开发实践,感兴... 目录1. 连接 PostgreSQL 数据库2. 创建数据库3. 查看当前数据库4. 查看所有数据库

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

shell中set -u、set -x、set -e的使用

《shell中set-u、set-x、set-e的使用》本文主要介绍了shell中set-u、set-x、set-e的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录✅ 1. set -u:防止使用未定义变量 作用: 示例:❌ 报错示例输出:✅ 推荐使用场景:✅ 2. se

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Java -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-