linux中的nm命令
-
nm命令是Linux系统中的一个工具,用于查看目标文件或者共享库中的符号表信息。符号表记录了目标文件或者共享库中所定义、引用的函数、变量等符号的信息。nm命令可以帮助开发者了解目标文件或者共享库的符号信息,是一个非常有用的工具。
使用nm命令可以查看目标文件或者共享库中的符号表。常用的命令选项有以下几种:
– -a或者–debug-syms选项:显示所有符号表信息,包括调试符号表;
– -u或者–undefined-only选项:只显示未定义(引用)的符号;
– -A或者–with-full-symbol-addr选项:显示符号表中的地址;
– -C或者–demangle选项:对C++符号进行解密;
– -I或者–dynamic选项:只显示动态符号表;nm命令的使用格式如下:
“`
nm [选项] <目标文件>
“`
其中,目标文件可以是二进制可执行文件、目标文件(.o文件)或者库文件(.a或者.so文件)。nm命令会默认按照十六进制的地址排序并显示符号表信息。举个例子,我们可以使用nm命令查看一个目标文件的符号表信息:
“`
nm -a target.o
“`
nm命令将会输出目标文件中的所有符号信息,包括符号的地址、类型(函数、变量等)以及符号的名字。通过观察符号表信息,我们可以了解目标文件中定义和引用的所有符号,有助于开发和调试工作。总之,nm命令是Linux系统中非常有用的一个工具,可以帮助开发者查看目标文件或者共享库中的符号表信息,从而更好地了解代码结构和进行调试工作。
2年前 -
1. nm是一种在Linux系统中使用的命令行工具,用于查看二进制文件中的符号表信息。符号表记录了程序中定义的全局变量、函数和外部变量等信息。
2. 使用nm命令可以查看一个二进制文件中的所有符号(包括函数和变量)以及它们的地址、类型和大小等信息。这对于调试和分析二进制文件非常有用。
3. nm命令常用于开发人员调试和优化代码,特别是在程序崩溃或发生错误时。通过检查二进制文件的符号表,开发人员可以确定问题出现的位置,并更好地理解程序的结构和行为。
4. nm命令的语法为:nm [选项] [文件名],其中选项可以用于指定显示的符号类型以及其他附加信息。常用的选项包括”-a”(显示所有符号)、”-u”(显示未定义的符号)和”-C”(使用符号的原始名称而不是其修饰版本)等。
5. nm命令还可以用于链接器(如ld)的输入文件中查找库函数的定义。这对于解决链接错误和依赖关系非常有帮助。通过使用nm命令,可以确定哪些库函数被程序中的某个符号引用,从而找到所需的库文件。
2年前 -
NM(Name List)命令是Linux系统中的一个用于查看和分析目标文件中符号表的工具。符号表中存储着目标文件中的所有全局变量、函数和外部符号等信息。通过使用NM命令,可以快速浏览目标文件的符号信息,从而进行代码分析和调试。
NM命令的使用方法及操作流程如下:
1. 基本语法:
“`shell
nm [选项] 目标文件
“`2. 常用选项:
– `-A`:将符号表中的符号以十六进制的形式显示出来。
– `-a`:将目标文件中的所有符号(包括本地符号和全局符号)都显示出来,默认情况下只显示全局符号。
– `-l`:将对象文件的名称解析成源文件和行号的形式进行显示。
– `-C`:将C++的符号进行进行还原,方便阅读。
– `-S`:显示与目标文件中的符号相关的源代码。
– `-u`:只显示未定义的符号。
– `-t`:以符号数值从低到高的顺序对符号进行排序。
– `-r`:反向排序,以符号数值从高到低的顺序对符号进行排序。3. 示例:
– 查看目标文件的全局符号表:
“`shell
nm target.o
“`– 查看目标文件的所有符号表(包括本地符号和全局符号):
“`shell
nm -a target.o
“`– 显示符号表中的符号定义的行号:
“`shell
nm -l target.o
“`– 显示未定义的符号:
“`shell
nm -u target.o
“`4. 结果解读:
在使用NM命令后,将会输出目标文件中的符号表信息。符号表包含了目标文件中的各种符号类型,常见的符号类型有以下几种:
– `T`:代码段中的符号(函数)。
– `D`:数据段中的符号(全局变量)。
– `B`:BSS段中的符号(未初始化的全局变量)。
– `U`:未定义的符号,需要在链接阶段解析。
– `W`:弱符号,可以被其他强符号重定义。
– `V`:用于描述目标文件的版本信息。
– `s`:本地符号,只在目标文件内部可见。符号表中的每一行包含了符号的地址、符号类型以及符号的名称等信息。
通过使用NM命令,可以方便地查看目标文件中的符号信息,有助于进行代码调试和分析。
2年前