对于一些动态库,直接nm可能查不到信息,可以通过 nm -D 命令查看。 2.4 strings 查看二进制文件中的字符串 strings信息可以打印二进制文件中的字符串信息,结合grep进行搜索,用grep命令其实可以直接在二进制文件中搜索内容,但是不够直观,用strings看起来的更直观些: strings 会把任何可打印字符串都显示出来,比nm的内容...
总之,nm命令是一个非常有用的工具,它可以帮助我们分析目标文件的符号信息,用于调试和优化程序。 在Linux系统中,nm命令用于显示目标文件、可执行文件或者目标文件存档中的符号表。nm命令能够显示出目标文件中所有的符号、符号的大小和符号的类型。 使用nm命令的一般语法如下: “` nm [选项] 文件名 “` 在这里,选项...
例如`nm -a /usr/lib/libc.so`会显示libc库中所有符号及其地址。 5. 列出动态符号表 使用`-D`选项可以列出目标文件中的动态符号表。动态符号表包含由动态链接器解析的函数和变量符号。例如`nm -D /usr/lib/libc.so`会列出libc库中的动态符号。 总结: nm命令是Linux中用于查看目标文件符号表的工具,它可以显...
}接下来,我们编译该程序,然后看nm的结果: $ g++ test.cc -o test c$ nm test 08049f10 d _DYNAMIC 08049ff4 d _GLOBAL_OFFSET_TABLE_ 080486f0 t _GLOBAL__I_main 080487fc R _IO_stdin_used w _Jv_RegisterClasses 080486b0 t _Z41__static_initialization_and_destruction_0ii 0804870c W _ZN4T...
nm输出内容解析 下面我们再来解析输出信息中各部分所代表的意思: 首先,前面那一串数字,指的就是地址,如果是二进制目标文件,指的就是逻辑地址,并非程序最后运行时的地址。 然后,我们发现,每一个条目前面还有一个字母,类似'U','B','D等等,其实这些符号代表的就是当前条目所对应的内存所在部分 ...
接下来,我们编译该程序,然后看nm的结果: $ g++ test.cc -o test c$ nm test 08049f10 d _DYNAMIC 08049ff4 d _GLOBAL_OFFSET_TABLE_ 080486f0 t _GLOBAL__I_main 080487fc R _IO_stdin_used w _Jv_RegisterClasses 080486b0 t _Z41__static_initialization_and_destruction_0ii ...
nm 程序可用于列举符号及其类型和值,但是,要更仔细地研究目标文件中这些命名段的内容,需要使用功能更强大的工具。其中两种功能强大的工具是objdump和readelf。 readelf工具使用来显示一个或多个ELF格式文件信息的GNU工具。使用不同的参数可以查看ELF文件不同的的信息。
是names的缩写, nm命令主要是用来列出某些文件中的符号(说白了就是一些函数和全局变量等)。 下面, 我们一起来看看。 linux中的nm命令简介 nm * 1. nm: main.c: 不可识别的文件格式 nm: test.c: 不可识别的文件格式 nm: test.h: 不可识别的文件格式 ...
Linux常用命令nm命令被用于显示二进制目标文件的符号表。 nm 显示二进制目标文件的符号表 语法 nm(选项)(参数) AI代码助手复制代码 选项 -A:每个符号前显示文件名; -D:显示动态符号; -g:仅显示外部符号; -r:反序显示符号表。 AI代码助手复制代码
nm 命令使用以下符号(用同样的字符表示弱符号作为全局符号)之一来表示文件符号类型: A Global absolute 符号。 a Local absolute 符号。 B Global bss 符号。 b Local bss 符号。 D Global data 符号。 d Local data 符号。 f 源文件名称符号。 T Global text 符号。