nm命令
它用来列出一个目标文件中的各种符号。
nm命令还是比较简单而且强大的。它用来列出一个目标文件中的各种符号。符号的种类很多,以下是一些常见的符号类型
|
nm输出字符 |
含义 |
|
R |
Read only symbol. 比如在代码中有一个const MAXDATA = 3095; 则MAXDATA就是一个Read only symbol |
|
N |
这是一个调试符号 |
|
D |
这是一个已经初始化的变量的符号。比如代码中int i = 1和char *str = "Hello"则i和str都是这种类型的符号 |
|
T |
Text段的符号。子程序都是这种符号,比如文件中实现了一个函数function,则function就是这种符号 |
|
U |
未定义的符号。如果文件中引用了不存在的函数,则这些未定义的函数符号就是这种类型 |
|
S |
未初始化的符号,比如全局变量int s;则s的符号就是此类型 |
nm命令的详细用法以及例子见正文。
先来例子,以下是a.c的内容:
#include <stdio.h>
static int s_global;
int i = 1;
char *str = "hello, world";
const ID = 10;
extern int e_global;
void function()
{
printf("Hello");
}
int get_x()
{
int x;
x = 33;
return x;
}
在执行"gcc -g -O -c a.c"产生a.o之后,用"nm -A a.o"的输出为:
a.o:00000000 R ID
a.o:00000000 T function
a.o:00000014 T get_x
a.o:00000000 D i
a.o: U printf
a.o:00000000 b s_global
a.o:00000004 D str
nm的用法
nm的用法很简单,以下几个关键字比较常用:
1、"-A",列出符号名的时候同时显示来自于哪个文件。
这在同时列出多个文件(比如一个链接库)的符号时比较有用
2、"-a",列出所有符号
这将会把调试符号也列出来。默认状态下调试符号不会被列出。
3、"-l",列出符号在源代码中对应的行号
指定这个参数后,nm将利用调试信息找出文件名以及符号的行号。对于一个已定义符号,将会找出这个符号定义的行号,对于未定义符号,显示为空
4、"-n",根据符号的地址来排序
默认是按符号名称的字母顺序排序的
5、"-u",只列出未定义符号
同"--undefined-only", 而"--defined-only"将只列出已定义符号
nm命令的更多相关文章
- 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 命令 程序符号信息查看
http://www.cnblogs.com/wangkangluo1/archive/2012/07/02/2572438.html 用途 显示关于对象文件.可执行文件以及对象文件库里的符号信息. ...
- linux下nm命令的使用
linux下强大的文件分析工具 -- nm 什么是nm nm命令是linux下自带的特定文件分析工具,一般用来检查分析二进制文件.库文件.可执行文件中的符号表,返回二进制文件中各段的信息. 目标文件. ...
- 怎么查看二进制文件内容?linux下nm命令告诉你!
linux下强大的文件分析工具 -- nm 什么是nm nm命令是linux下自带的特定文件分析工具,一般用来检查分析二进制文件.库文件.可执行文件中的符号表,返回二进制文件中各段的信息. 目标文件. ...
- nm命令介绍
一.参考文章 网址1:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/nm.html 参考2: man nm 参考3:<linux ...
- binary hacks读数笔记(nm命令)
nm命令(names):输出包含三个部分:1 符号值.默认显示十六进制,也可以指定: 2 符号类型.小写表示是本地符号,大写表示全局符号(external); 3 符号名称. 例如:nm Simple ...
随机推荐
- FZU Problem 2169 shadow
http://acm.fzu.edu.cn/problem.php?pid=2169 题目大意: S王国有N个城市,有N-1条道路.王都为编号1的城市.叛军驻扎在很多城市.除了王都外有K个城市有军队, ...
- C#中继承,集合(Eleventh day)
又到了总结知识的时间,今天在云和学院继续学习了继承的一些运用,和集合的运用.下面就总结下来吧 理论: 显示调用父类的构造方法,关键字: base:构造函数不能被继承:子类对象被实例化的时候会先去主动的 ...
- Enze fourth day(循环语句 一)
哈喽,大家好.又到了总结知识的时间了.今天在云和学院自学了一下循环语句,下面是自己总的一些知识点. 先补充一下选择结构中的switch语句. 理论:switch语句是一种多分支选择语句,当需要测试大量 ...
- C++基础梳理--Class、Struct、Union
C++学习一段时间后,反过头来看我发现我忘了一下最基础的东西:strcut(结构体),union(联合体)我学会了类的一堆东西却忘了这两个最基础的: 现在就好好的重新学习一下这里的东西: 一.Clas ...
- Qualified name lookup
Qualified name lookup Qualified name lookup Enumerations Class members Namespace members Unqualified ...
- Spring注解配置
配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...
- Week13(12月5日):不怕错误,慢慢来 :)
Part I:提问 =========================== 1.ASP.NET MVC的最新版本是( ). A.2 B.3 C.4 D.5 2.本学期授课中使 ...
- 下载的firebug-lite压缩包的调用方法
把以下代码copy到地址栏按回车,等加载完毕之后(受网速限制,有时候等待会久一点,如果很久都无法加载,重试几次就ok了),就会显示firebug lite的窗口,这样不用更改页面任何东西,任何地方轻松 ...
- HTML5的本地存储功能,值得研究
https://developer.chrome.com/apps/offline_storage 搜索“chrome html5 本地缓存”,一大堆文章,比如: http://www.cnblogs ...
- Android网络开发之用tcpdump抓包
Android开发过程中,当涉及到网络通信的时候,有一些字段须要抓包获取.我之前由于SSDP设备发现的包头格式没有写对,经过抓包分析和标准包头对照发现了这个困扰我非常久的问题.总之,掌握在Androi ...