linux下nm命令输出
-
nm命令用于查看目标文件或可执行文件中的符号表(Symbol Table),即查看文件中已定义和已引用的符号(函数、变量等)。在Linux下,使用nm命令可以查看目标文件、静态库文件和可执行文件的符号表,从而帮助我们了解相关文件的符号信息。
输入命令”nm”后可以加上以下参数:
1. -A 或 –with-symbol-attributes:显示符号的附加属性信息,例如符号的可见状态(local、global、weak)、符号的类型(函数、变量等)等。
2. -C 或 –demangle:对C++符号进行解码(demangle),将C++的编码符号转换为人类可读的形式。
3. -D 或 –dynamic:显示动态符号(即动态库中的符号)。
4. -n 或 –numeric-sort:以符号的数值地址进行排序。
5. -r 或 –reverse-sort:以相反的顺序进行排序。
6. -S 或 –print-size:显示符号的大小(仅适用于对象文件)。
7. -t 或 –radix-sort:按照数字进制进行排序,例如16进制、10进制等。
8. -u 或 –undefined-only:只显示未定义符号。
9. -v 或 –version:显示nm命令的版本信息。
使用示例:
1. 查看目标文件中的符号表:
“`
nm <目标文件>
“`2. 查看可执行文件中的符号表:
“`
nm <可执行文件>
“`3. 查看静态库文件中的符号表:
“`
nm <静态库文件>
“`4. 查看动态库文件中的符号表:
“`
nm -D <动态库文件>
“`5. 查看符号表并显示符号的大小:
“`
nm -S <目标文件/可执行文件/静态库文件>
“`以上是在Linux下使用nm命令查看符号表的基本操作和参数说明,通过nm命令,可以帮助我们分析目标文件和可执行文件中的符号信息,对于开发和调试非常有用。
2年前 -
在Linux系统中,nm命令用于显示目标文件中的符号表。符号表是一个记录了函数名、变量名以及其他与程序运行相关的标识符的表格。以下是nm命令的输出内容及其含义:
1. 符号的地址: 输出显示了符号在目标文件中的地址。地址可以以十六进制表示或者以十进制表示。
2. 符号的类型: 输出列出了每个符号的类型,以帮助识别符号的性质。例如,常见的符号类型包括函数(F)、对象文件(O)和未定义符号(U)。
3. 符号的大小: 对于可执行文件和共享库,nm命令还会显示符号的大小。大小以字节为单位。
4. 符号的名称: 输出显示了每个符号的名称。它可以是函数名、变量名或其他标识符名称。
5. 符号的绑定: 输出显示了符号的绑定类型。常见绑定类型包括全局(G)和局部(L)。全局符号可以被其他文件引用,而局部符号只在当前文件中可见。
除了以上的基本内容外,nm命令还可以显示其他一些信息,具体取决于命令行选项的使用。常用选项有:
– -A:显示所有符号,包括未绑定的本地符号。
– -C:尝试从C++符号中截取出函数名。
– -l:显示符号所属的源代码文件和行号。
– -D:显示符号的代码地址和相关调试信息。
– -p:显示符号的值,在C程序中通常是变量的地址。总之,nm命令是一个非常有用的工具,它可以帮助我们分析目标文件的符号信息,用于调试和优化程序。
2年前 -
在Linux系统中,nm命令用于显示目标文件、可执行文件或者目标文件存档中的符号表。nm命令能够显示出目标文件中所有的符号、符号的大小和符号的类型。
使用nm命令的一般语法如下:
“`
nm [选项] 文件名
“`在这里,选项可以是以下之一:
– `-A`:按地址排序,而不是按符号名称排序。
– `-a`:显示所有符号,包括未参与动态重定位的符号。
– `-C`:显示C++符号,而不是只显示C符号。
– `-D`:仅显示动态符号。
– `-d`:仅显示数据段中的符号。
– `-r`:显示仅链接到其他符号的符号。
– `-u`:显示未定义的符号。
– `-t`:显示每个符号的剩余标志。除了这些选项,您还可以指定要使用的目标文件的路径,以及希望输出的目标符号表的位置。
下面是nm命令的常见用法示例:
### 示例一:查看已编译的可执行文件的符号表
“`
nm /path/to/executable
“`这个命令将会显示可执行文件中的所有符号,包括函数和全局变量。
### 示例二:查看目标文件的符号表
“`
nm /path/to/object/file.o
“`这个命令将会显示目标文件中的所有符号,包括函数和全局变量。
### 示例三:按照地址排序显示符号表
“`
nm -A /path/to/executable
“`这个命令将会按照符号的地址排序显示可执行文件中的符号表。
### 示例四:只显示未定义的符号
“`
nm -u /path/to/executable
“`这个命令将会只显示可执行文件中的未定义符号,即没有在当前文件中定义的符号。
### 示例五:只显示数据段中的符号
“`
nm -d /path/to/executable
“`这个命令将会只显示可执行文件中数据段中的符号,其中包括全局数据变量。
### 示例六:只显示动态符号
“`
nm -D /path/to/executable
“`这个命令将会只显示可执行文件中的动态符号,即可重定位的符号。
以上是nm命令的基本用法和常见示例。通过使用不同的选项,您可以根据自己的需求来显示和过滤符号表的信息。
2年前