linux 下nm命令输出,linux下nm命令(显示可执行文件的符号信息)介绍以及常见nm命令用法举例...

linux下nm命令(显示可执行文件的符号信息)介绍以及常见nm命令用法举例

nm命令名:nm - list symbols from object files

nm命令语法简介:nm [-a│--debug-syms] [-g│--extern-only]

[-B] [-C│--demangle[=style]] [-D│--dynamic]

[-S│--print-size] [-s│--print-armap]

[-A│-o│--print-file-name][--special-syms]

[-n│-v│--numeric-sort] [-p│--no-sort]

[-r│--reverse-sort] [--size-sort] [-u│--undefined-only]

[-t radix│--radix=radix] [-P│--portability]

[--target=bfdname] [-fformat│--format=format]

[--defined-only] [-l│--line-numbers] [--no-demangle]

[-V│--version] [-X 32_64] [--help]  [objfile...]

nm命令常见选项介绍,以下几个关键字比较常用:

1、"-A",列出符号名的时候同时显示来自于哪个文件。

这在同时列出多个文件(比如一个链接库)的符号时比较有用

2、"-a",列出所有符号

这将会把调试符号也列出来。默认状态下调试符号不会被列出。

3、"-l",列出符号在源代码中对应的行号

指定这个参数后,nm将利用调试信息找出文件名以及符号的行号。对于一个已定义符号,将会找出这个符号定义的行号,对于未定义符号,显示为空

4、"-n",根据符号的地址来排序

默认是按符号名称的字母顺序排序的

5、"-u",只列出未定义符号

同"--undefined-only", 而"--defined-only"将只列出已定义符号

nm命令用法举例:

1.列出 a.out 对象文件的静态和外部符号,请输入:nm -e a.out

2.以十六进制显示符号大小和值并且按值排序符号,请输入:nm -xv a.out

3.显示 libc.a 中所有 64 位对象符号,忽略所有 32 位对象:nm -X64 /usr/lib/libc.a