linux下nm命令
-
nm命令是Linux系统中一个很有用的命令,它主要用于查看二进制文件中的符号表和共享库中的动态符号。下面将详细介绍nm命令的使用方法和常见参数。
1. 命令语法:
nm [参数] [文件名]2. 常见参数:
-A : 以反序显示符号表
-C : 以C++的形式显示符号表
-D : 显示动态符号表(默认)
-S : 显示符号表中完整的符号信息
-s : 显示符号表中的大小信息
-u : 仅显示未定义的符号
-t : 以顺序显示符号表
-v : 显示所有包含指定符号表的文件3. 示例用法:
a) 查看可执行文件中的符号表信息:
nm executable_fileb) 查看静态库中的符号表信息:
nm static_libraryc) 查看共享库中的符号表信息:
nm shared_libraryd) 显示符号表中完整的符号信息:
nm -S executable_filee) 只显示未定义的符号:
nm -u executable_filef) 查看符号表中的大小信息:
nm -s executable_fileg) 以反序显示符号表:
nm -A executable_fileh) 以C++的形式显示符号表:
nm -C executable_filei) 显示所有包含指定符号表的文件:
nm -v symbol_namej) 以顺序显示符号表:
nm -t executable_file4. 结果解读:
在使用nm命令后,会输出一些十六进制的地址和符号名称。常见的符号类型有函数、变量、未定义符号等。通过观察地址和符号名称,可以了解二进制文件或共享库中的符号信息。总之,nm命令是一个在Linux系统中查看二进制文件和共享库符号信息的常用工具,掌握了它的使用方法可以帮助我们更好地理解和调试程序。
2年前 -
nm命令是一个用于查看目标文件(二进制文件)中符号表信息的工具。它可以用于查看编译后的可执行文件、共享库文件和目标文件中的符号信息,包括函数名称、变量名称和数据结构等。
下面是Linux下nm命令的一些常用选项和用法:
1. 显示符号表信息:
使用nm命令最简单的用法是只指定目标文件的路径,例如:
“`
nm /path/to/file
“`
这将显示目标文件中的所有符号信息,包括符号的地址、类型和名称等。2. 过滤符号信息:
可以结合使用选项来过滤显示的符号信息。常用的选项包括:
– `–undefined-only`:只显示未定义的符号。
– `-D`:只显示全局数据(变量)符号。
– `-t`:按字母顺序显示符号表。例如,以下命令将只显示未定义的全局函数符号:
“`
nm -D -u /path/to/file
“`3. 以指定的格式显示地址:
使用选项`-o`可以指定nm命令显示地址的格式。常用的格式有:
– `d`:十进制
– `o`:八进制(默认)
– `x`:十六进制例如,以下命令将使用十六进制格式显示符号的地址:
“`
nm -o /path/to/file
“`4. 查看动态符号表:
使用选项`-D`可以查看可执行文件或共享库文件的动态符号表(.dynsym节)。动态符号表中存储了共享库函数的符号信息。例如,以下命令将显示可执行文件中的动态符号表信息:
“`
nm -D /path/to/executable
“`5. 查看调试信息:
可以使用选项`-a`来查看目标文件的调试信息(.debug节)。调试信息中包含了编译源代码时的符号信息和调试用途的相关信息。例如,以下命令将显示目标文件的调试信息:
“`
nm -a /path/to/file
“`总结:
nm命令是一个在Linux系统下查看目标文件符号表信息的实用工具。它可以显示目标文件中的函数名称、变量名称和数据结构等符号信息。通过使用不同的选项和参数,可以根据需要过滤和格式化显示符号信息,以及查看动态符号表和调试信息。2年前 -
在Linux操作系统中,`nm`命令用于显示目标文件中的符号表(包括函数、变量等)信息。它可以用于分析可执行文件、静态库和动态库等文件的符号表信息。下面将从安装、基本用法和示例三个方面详细介绍`nm`命令。
## 1. 安装
`nm`命令通常默认安装在Linux系统中。如果你的系统没有安装该命令,可以通过以下命令安装:
– Debian/Ubuntu:
“`
sudo apt-get install binutils
“`– CentOS/Fedora:
“`
sudo yum install binutils
“`## 2. 基本用法
`nm`命令的基本语法如下:
“`
nm [option] [file]
“`
其中,`option`是可选的命令选项,而`file`是需要分析的目标文件。常用的选项包括:
– `-A`:在符号名前显示符号的类型;
– `-a`:在符号名前显示符号的地址;
– `-C`:在C++符号引用前加上类型信息;
– `-r`:按照内存地址的顺序对符号进行排序;
– `-U`:只显示未定义的符号。以下是一些常见的用法示例:
### 示例1:显示目标文件的符号表
“`
nm example.o
“`
这将显示`example.o`文件中的符号表。### 示例2:显示目标文件的符号地址
“`
nm -a example.o
“`
运行上述命令,可以显示`example.o`文件中的符号表,同时显示每个符号的地址。### 示例3:以内存地址顺序排序符号表
“`
nm -r example.o
“`
这将按照内存地址顺序对`example.o`文件中的符号进行排序。## 3. 操作流程及注意事项
使用`nm`命令的操作流程如下:
1. 打开终端,并进入目标文件所在的目录。
2. 运行`nm`命令,使用适当的选项和目标文件名。
3. 分析输出的符号表信息,可以根据需要查找特定的符号。需要注意的是,`nm`命令只能分析二进制文件的符号表,对于源代码文件无法起效。此外,在分析动态库或可执行文件时,可能需要使用`-D`选项来显示调试符号信息。
另外,`nm`命令默认输出以十六进制表示的内存地址,如果需要以十进制或其他方式显示地址,可以通过选项进行调整。
总结:`nm`命令是Linux系统中一个用于显示符号表信息的强大工具。通过该命令,我们可以查看可执行文件、静态库和动态库等文件的符号表,以便进行分析和调试工作。熟练使用`nm`命令可以提高我们对代码的理解和调试的效率。
2年前