Skip to main content

Linux - Unix命令:nm

FawoL & Linux - Dual Speed Art - Nm (可能 2024)

FawoL & Linux - Dual Speed Art - Nm (可能 2024)
Anonim

nm - 列出目标文件中的符号

概要

nm -一个|--debug-SYMS -G|--extern只 -B -C|--demangle= 样式 -D| - 动态 -S|--print大小 -s|--print-armap -一个|-o|--print文件名称 -n|-v|--numeric排序 -p|--no排序 -r|--reverse排序 --size排序 -u|--undefined只 -t 基数 |--radix = 基数 -P| - 可移植性 --target = bfdname -F 格式 |--format = 格式 --defined只 -l|--line号码 --no-还原函数 -V| - 版 -X 32_64 - 救命 OBJFILE …

描述

GNU纳米 列出目标文件中的符号 OBJFILE ….如果没有目标文件列为参数,纳米 假定文件 的a.out .

对于每个符号,纳米 说明:

*

符号值,以选项(见下文)选择的基数,或默认为十六进制。

*

符号类型。至少使用以下类型;其他也是,取决于目标文件格式。如果是小写,则符号是本地的;如果是大写,则符号为全局(外部)。

一个

符号的值是绝对值,不会通过进一步链接来更改。

符号位于未初始化的数据部分(称为BSS)中。

C

符号很常见。常用符号是未初始化的数据。链接时,多个常用符号可能会出现相同的名称。如果符号在任何地方定义,则公共符号将被视为未定义的引用。

d

符号位于初始化数据部分。

G

符号位于小对象的初始化数据部分中。某些目标文件格式允许更有效地访问小数据对象,例如全局int变量而不是大型全局数组。

一世

符号是对另一个符号的间接引用。这是很少使用的a.out对象文件格式的GNUextension。

ñ

符号是一个调试符号。

R

符号位于只读数据部分。

小号

符号位于小对象的未初始化数据部分中。

Ť

符号位于文本(代码)部分。

ü

符号未定义。

V

符号是一个弱对象。当弱定义符号与正常定义的符号链接时,使用正常定义的符号而没有错误。当链接弱未定义符号且未定义符号时,弱符号的值变为零,没有错误。

w ^

符号是一个弱符号,未被特别标记为弱对象符号。当弱定义符号与正常定义的符号链接时,使用正常定义的符号而没有错误。当链接弱未定义符号且未定义符号时,弱符号的值变为零,没有错误。

-

符号是a.out对象文件中的stabs符号。在这种情况下,打印的下一个值是stabs其他字段,stabs desc字段和stab类型。 Stabs符号用于保存调试信息。

?

符号类型未知,或特定于目标文件格式。

*

符号名称。

OPTIONS

这里显示的长期和短期形式的选项是等价的。

-一个

-o

--print文件名称

在每个符号前面找到它所在的输入文件(或归档成员)的名称,而不是在其所有符号之前仅标识输入文件一次。

-一个

--debug-SYMS

显示所有符号,甚至是仅调试符号;通常这些都没有列出。

-B

同样的--format = BSD (与MIPS兼容纳米).

-C

--demangle = 样式

解码( 还原函数 )低级符号名称到用户级名称。除了删除系统前面的任何初始下划线之外,这使得C ++函数名称可读。不同的编译器具有不同的修改样式。可选的demangling样式参数可用于为编译器选择适当的demangling样式。

--no-还原函数

不要对低级符号名称进行解码。这是默认值。

-D

- 动态

显示动态符号而不是普通符号。这仅对动态对象有意义,例如某些类型的共享库。

-F 格式

--format = 格式

使用输出格式 格式 ,可以是“bsd”,“sysv”或“posix”。默认值为“bsd”。只有第一个字符 格式 很重要;它可以是大写或小写。

-G

--extern只

仅显示外部符号。

-l

--line号码

对于每个符号,请使用调试信息尝试查找文件名和行号。对于定义的符号,请查找符号地址的行号。对于未定义的符号,请查找引用该符号的重定位条目的行号。如果可以找到行号信息,请在其他符号信息之后打印。

-n

-v

--numeric排序

按地址对数字进行数字排序,而不是按名称按字母顺序排序。

-p

--no排序

不要费心按任何顺序对符号进行排序;按照遇到的顺序打印它们。

-P

- 可移植性

使用POSIX.2标准输出格式而不是默认格式。相当于-f posix.

-S

--print大小

打印“bsd”输出格式的已定义符号的大小。

-s

--print-armap

列出归档成员中的符号时,请包含索引:映射(存档在归档中AR 要么ranlib的)其中哪些模块包含名称的定义。

-r

--reverse排序

颠倒排序顺序(无论是数字还是字母);让最后一个来吧。

--size排序

按大小排序符号。大小计算为符号值与具有下一个较高值的符号值之间的差值。打印符号的大小,而不是值。

-t 基数

--radix = 基数

使用 基数 作为打印符号值的基数。肯定是d 小数,Ø 对于八进制,或X 对于十六进制。

--target = bfdname

指定系统默认格式以外的目标代码格式。

-u

--undefined只

仅显示未定义的符号(每个目标文件外部的符号)。

--defined只

仅显示每个目标文件的已定义符号。

-V

- 版

显示版本号纳米 并退出。

-X

对于与AIX版本的兼容性,将忽略此选项纳米。它需要一个必须是字符串的参数32_64。 AIX的默认模式纳米 对应于-X 32,GNU不支持纳米.

- 救命

显示选项的摘要纳米 并退出。

也可以看看

AR (1), objdump的 (1), ranlib的 (1),和Info条目 的binutils .

重要: 使用 人 命令( % 人 )查看特定计算机上如何使用命令。