Linux nm命令详解:查看库和目标文件的符号表
需积分: 1 139 浏览量
更新于2024-08-03
收藏 330KB PDF 举报
"ubuntu-nm命令基本使用.pdf"
nm命令是Linux操作系统中用于分析二进制文件的工具,它可以列出库文件、目标文件和可执行文件中的符号表。这个命令对于理解程序的结构、查找函数定义以及调试过程非常有用。下面我们将深入探讨nm命令的常用参数及其作用。
1. `-A`, `-o`, `--print-file-name`:这些参数会显示每个符号所属的文件名称,这对于追踪符号来源特别有帮助。
2. `-a`, `--debug-syms`:当使用此参数时,nm会显示调试符号,这对于调试和理解程序的内部工作至关重要,特别是对于C++程序,因为它们通常包含复杂的编译后信息。
3. `-B`:此选项用于兼容MIPS架构的nm,它等同于`--format=bsd`。
4. `-C`, `--demangle`:这个参数会将编译后的低级符号名转换为人类可读的C++函数名,使得符号解析更直观。
5. `-D`, `--dynamic`:仅显示动态符号,这对于查看共享库的接口非常有用。
6. `-f`, `--format=formatt`:允许用户选择输出格式,包括`bsd`, `sysv`和`posix`,默认为`bsd`。
7. `-g`, `--extern-only`:只显示外部符号,也就是不在当前文件中定义,而是从其他文件导入的符号。
8. `-n`, `-v`, `--numeric-sort`:按符号地址排序,而不是按符号名称排序,这有助于比较不同符号的位置。
9. `-p`, `--no-sort`:不进行任何排序,按文件中原始顺序显示符号。
10. `-P`, `--portability`:使用POSIX.2标准输出格式,这使得输出在不同的系统间保持一致。
11. `-s`, `--print-armap`:在列出库文件成员符号时,包含索引信息,显示哪些模块包含了哪些名字的映射。
12. `-r`, `--reverse-sort`:反向排序,即从高到低或从Z到A显示符号。
13. `--size-sort`:根据符号的大小进行排序,这对于查找占用内存最多的符号很有用。
14. `--tradix`或`--radix=radix`:指定数值显示的基数,可以是十进制(d)、八进制(o)或十六进制(x)。
15. `--target=bfdname`:指定目标代码格式,如果不使用,默认使用系统配置的格式。
16. `-u`, `--undefined-only`:仅显示未定义的符号,这对于查找依赖项和解决链接错误很有帮助。
17. `-l`, `--line-numbers`:尝试从调试信息中获取文件名和行号,这对于定位代码中的具体位置特别有用。
18. `-V`, `--version`:显示nm命令的版本信息。
通过这些参数的组合使用,开发者可以根据需要获取关于二进制文件的各种信息,包括函数、变量、全局常量和其他符号的定义和位置。在Ubuntu系统中,熟练掌握nm命令的使用能够极大提升开发和调试效率。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-09-29 上传
2022-09-20 上传
426 浏览量
极智视界
- 粉丝: 3w+
- 资源: 1770