nm命令解释
nm命令参数解释
-A 或-o或 --print-file-name:打印出每个符号属于的文件
-a或--debug-syms:打印出所有符号,包括debug符号
-B:BSD码显示
-C或--demangle[=style]:对低级符号名称进行解码,C++文件需要添加
--no-demangle:不对低级符号名称进行解码,默认参数
-D 或--dynamic:显示动态符号而不显示普通符号,一般用于动态库
-f format或--format=format:显示的形式,默认为bsd,可选为sysv和posix
-g或--extern-only:仅显示外部符号
-h或--help:国际惯例,显示命令的帮助信息
-n或-v或--numeric-sort:显示的符号以地址排序,而不是名称排序
-p或--no-sort:不对显示内容进行排序
-P或--portability:使用POSIX.2标准
-V或--version:国际管理,查看版本
--defined-only:仅显示定义的符号
符号类型含义
* 对于每一个符号来说,其类型如果是小写的,则表明该符号是local的;大写则表明该符号是global(external)的。
| 符号类型 | 含义 |
|---|---|
| A | 该符号的值是绝对的,在以后的链接过程中,不允许进行改变。这样的符号值,常常出现在中断向量表中,例如用符号来表示各个中断向量函数在中断向量表中的位置。 |
| b,B | 该符号的值出现在非初始化数据段(BSS)中。例如,在一个文件中定义全局static int test。则该符号test的类型为b,位于bss section中。其值表示该符号在BSS段中的偏移。 |
| C | 该符号为common。common symbol是未初始化的数据。该符号没有包含在一个普通section中,只有在链接过程中才进行分配。符号的值表示该符号需要的字节数。例如在一个C文件中,定义int test,并且该符号在别的地方会被引用,则该符号类型即为C,否则其类型为B。 |
| d,D | 该符号位于初始化数据段(data section)。例如定义全局变量 int baud_table[5] = {9600, 19200, 38400, 57600, 115200},则会被分配在初始化数据段中。 |
| g,G | 该符号也位于初始化数据段中。主要用于small object提高访问small data object的一种方式。 |
| i | 这是对标准ELF符号类型集的GNU扩展。它表示一个符号如果被重定位引用,不会计算该符号的地址,而是必须在运行时计算。 |
| N | 该符号是一个debugging符号。 |
| p | 该符号在stack unwind section。 |
| r,R | 该符号位于只读数据段(read only data section)。例如定义全局const int test[] = {123, 123};则test就是一个只读数据段的符号。 |
| s,S | 符号位于非初始化数据区,用于small object。 |
| t,T | 该符号位于代码段(text section);T表示导出符号,t表示内部符号。 |
| u | 符号是唯一的全局符号。这是GNU对标准ELF符号绑定集的扩展。对于这样的符号,动态链接器将确保在整个过程中只有一个使用此名称和类型的符号。 |
| U | 该符号在当前文件中是未定义的,即该符号定义在别的文件中。例如,当前文件调用另一个文件中定义的函数,这个被调用的函数在当前文件就是未定义的,但是在定义它的文件中类型是T。对于全局变量来说,在定义它的文件中,其符号类型为B或D,在使用它的文件中,其类型为U。Linux允许编译DSO时,不链接依赖的DSO;但在编译最终可执行时,需要链接所有需要的符号。 |
| v,V | 该符号是一个弱符号。当弱定义符号与正常定义符号链接时,使用正常定义符号时不会出错。当链接未定义的弱定义符号,弱符号的值将变为零,且没有错误。在某些系统上,大写表示已指定默认值。 |
| w,W | 该符号是一个弱符号,未专门标记为弱对象符号。当弱定义符号与正常定义符号链接时,使用正常定义符号时不会出错。当链接未定义的弱未定义符号时,该符号的值将以系统特定的方式确定,且不会出错。在某些系统上,大写表示已指定默认值。 |
| - | 该符号是a.out格式文件中的stabs symbol。在这种情况下,打印的下一个值是stabs other字段、stabs desc字段和stab类型。stabs符号用于保存调试信息。 |
| ? | 该符号类型没有定义。 |
示例
- 查看静态库:nm -g --defined-only libxxx.a
- 查看动态库:nm -D -C libxxx.so
参考
Linux nm 命令使用及符号含义_xuq09的专栏-CSDN博客_linux nm
Linux命令 ---- nm 显示目标文件符号_pekwing的博客-CSDN博客
nm命令解释的更多相关文章
- nm 命令 程序符号信息查看
http://www.cnblogs.com/wangkangluo1/archive/2012/07/02/2572438.html 用途 显示关于对象文件.可执行文件以及对象文件库里的符号信息. ...
- nm命令介绍
一.参考文章 网址1:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/nm.html 参考2: man nm 参考3:<linux ...
- 理解docker容器和镜像(layer,ufs)和docker命令解释
博客好文1:http://blog.csdn.net/x931100537/article/details/49633107(理解docker容器和镜像,理解简单,从原理入手,什么是layer,什么是 ...
- linux中的nm命令简介
转:http://blog.csdn.net/stpeace/article/details/47089585 一般来说, 搞linux开发的人, 才会用到nm命令, 非开发的人, 应该用不到. 虽然 ...
- ar命令和nm命令(建库!)
ar 命令详解 今天,跟着我们的技术大牛学了不少东西,首先就是这个ar命令啦. 当我们的程序中有经常使用的模块,而且这些模块在其他程序中也会用到,为了实现代码重用减少软件开发周期,我们可以将它们生成库 ...
- strings和nm命令
strings和nm命令 strings 一.简介: 显示文件中的可打印字符 二.用法 strings [option(s)] [file(s)] 选项说明: -a – –all 扫描整个文件而不是只 ...
- nm命令中符号类型详解
摘自http://blog.csdn.net/solmyr_biti/article/details/6565479 nm命令介绍的很多,但大多不介绍其函数符号标志的含义.最近在调试动态库时常用到,其 ...
- nm命令
它用来列出一个目标文件中的各种符号. nm命令还是比较简单而且强大的.它用来列出一个目标文件中的各种符号.符号的种类很多,以下是一些常见的符号类型 nm输出字符 含义 R Read only symb ...
- 【转】nagios 命令解释
nagios 命令解释 check_ssh 界面拼装参数格式如下共3个元素: 命令!端口!连接超时时间 ...
- nginx配置文件结构,语法,配置命令解释
摘要: nginx的配置文件类似于一门优雅的编程语言,弄懂了它的规范就可以自定义配置文件了,这个很重要~ 1,结构分析 nginx配置文件中主要包括六块:main,events,http,server ...
随机推荐
- aardio + .NET 快速开发独立 EXE 程序,可防 ILSpy 反编译
简介 aardio 可以非常方便地调用 .NET( 不需要任何复杂的步骤 ). .NET 在 aardio 中很好用,系统自带 .NET 组件以及各种开源 .NET 组件在 aardio 用户中也很受 ...
- spring native 初体验实现 小米控制美的空调
目前关于 spring native 分享的文章还比较少 写这篇文章的主要目前是分享一下自己写的一个 小米控制美的空调 的程序 集成 spring native 过程中碰到的一些问题和解决方法 先放地 ...
- 璞华HawkEye平台助力乳品行业巨头在数字化转型中领“鲜”一步!
中国乳制品的市场规模接近4,000亿.在今天,产业数字化正在帮助这个传统产业实现更高质量的发展. 乳品行业现状 随着乳品行业规模扩大,各工厂引进大量的专用设备,设备故障也随之增多.设备的突发故障极易造 ...
- winform,xml读取与写入
创建两个xml文件,一个 xml做为模板配置项,另一个做为临时接收数据. private static string localPath = System.Environment.CurrentDir ...
- MinIO Server配置指南
MinIO server在默认情况下会将所有配置信息存到 ${HOME}/.minio/config.json 文件中. 以下部分提供每个字段的详细说明以及如何自定义它们. 配置目录 默认的配置目录是 ...
- .NET 反向代理 YARP 自定义配置提供程序(Configuration Providers)
介绍 基本 Yarp 示例显示从 appsettings.json 加载的代理配置.相反,代理配置可以从您选择的源以编程方式加载.您可以通过提供几个实现 IProxyConfigProvider 和 ...
- echarts pie饼状图绑定点击事件
var valueData = [ {value: 33,name: '诊所'}, {value: 29,name: '汽车服务相关'}, {value: 27, name: '洗衣店'}, {val ...
- Spring让人眼前一亮的11个小技巧
前言 我们一说到spring,可能第一个想到的是 IOC(控制反转) 和 AOP(面向切面编程). 没错,它们是spring的基石,得益于它们的优秀设计,使得spring能够从众多优秀框架中脱颖而出. ...
- Dapr 长程测试和混沌测试
介绍 这是Dapr的特色项目,具体参见: https://github.com/dapr/test-infra/issues/11 ,在全天候运行的应用程序中保持Dapr可靠性至关重要.在部署真正的应 ...
- HDU1712 ACboy needs your help(分组背包)
每种课程学习不同天数可以获得不同价值,这可以看成一个组,那么题目就是分组背包的模板题了. 1 #include<cstdio> 2 #include<cstring> 3 #i ...