linuxnm命令详解

worktile 其他 159

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Linux中的nm命令用于检查目标文件或者二进制文件中所包含的符号表。 nm命令主要用于两个方面:

    1. 查看符号表信息
    nm命令可以用于查看可执行文件、目标文件和动态共享库等二进制文件中包含的符号表信息,包括函数、变量和符号地址等。使用`nm [options] `的命令格式,可以输出文件中的某些特定信息,如函数的地址和符号的类型。

    其中常用的选项包括:
    – -a或者–debug-syms:显示所有调试符号。
    – -C或者–demangle:显示C++符号表中的函数参数和返回类型。
    – -D或者–dynamic:显示动态符号表。
    – -g或者–extern-only:只显示全局符号表中的外部符号。
    – -t或者–defined-only:只显示已定义的符号。

    例如,使用命令`nm -A `可以查看文件中的所有符号表信息。

    2. 检查符号依赖关系
    nm命令还可以用于检查二进制文件之间的符号依赖关系。通过查看符号表信息,可以确定一个二进制文件所依赖的其他文件和库。这对于解决编译链接错误或者查找缺失的依赖库非常有用。

    例如,可以使用命令`nm -D `查看某个动态共享库所依赖的其他库。

    总之,nm命令可以帮助开发者查看二进制文件的符号表信息,方便调试和解决依赖问题。它是Linux开发中非常有用的一个工具。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    1. 命令简介:
    linuxnm命令是用于显示一个或多个目标文件中的符号表的命令,它可以列出目标文件中定义和引用的符号,包括函数、全局变量和局部变量等。

    2. 命令格式:
    nm [选项] [目标文件]

    3. 命令参数:
    -a 或 –debug-syms:显示调试符号。
    -A 或 –plugin 后跟插件名:加载指定的插件。
    -S:显示符号的大小。
    -v 或 –version:显示版本信息。
    -h 或 –help:显示帮助信息。

    4. 命令输出:
    nm命令输出的每一行代表一个符号,一般包含以下几列信息:
    – 符号的地址:以16进制格式显示。
    – 符号的类型:可以是函数、全局变量、局部变量等。
    – 符号的名称:符号的标识符。
    – 符号的大小:当使用-S选项时显示。

    5. 使用示例:
    – 显示目标文件的符号表:
    nm filename

    – 只显示函数符号:
    nm -t filename

    – 显示调试符号:
    nm -a filename

    – 显示符号的大小:
    nm -S filename

    – 列出所有目标文件的符号表:
    nm *.o

    – 使用插件加载特定的符号表:
    nm –plugin=xxx filename

    以上是对linuxnm命令进行详解的内容,通过该命令可以方便地查看目标文件中的符号表信息,对于开发人员在调试和分析代码时非常有用。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Linux nm命令是一种用于查看和分析程序中的符号表的工具。符号表(Symbol Table)是编译器在链接阶段生成的一种数据结构,用于存储程序中所有可见符号的信息。符号包括全局变量、局部变量、函数名称等。

    使用nm命令可以查看程序中的符号表信息,包括符号名称、地址、类型等。这些信息对于调试程序、分析程序的依赖关系、查找函数的定义等非常有帮助。

    下面将详细介绍Linux nm命令的使用方法、操作流程和常用选项。

    ## 1. 命令格式

    “`
    nm [options] [filename]
    “`

    ## 2. 常用选项

    – -A:显示所有符号,包括隐藏符号和未定义符号。
    – -a:按地址顺序显示符号。
    – -l:显示文件的依赖关系。
    – -o:显示符号与源文件的对应关系。
    – -g:只显示全局(外部)符号。
    – -C:显示符号的C++名称。
    – -S:显示符号的大小。
    – -d:只显示动态符号。

    ## 3. 使用示例

    ### 示例1:查看可执行文件中的符号表

    “`
    nm a.out
    “`

    该命令将显示a.out可执行文件中的符号表,默认按照名称的字母顺序排列。

    ### 示例2:只显示全局符号

    “`
    nm -g a.out
    “`

    该命令将只显示a.out可执行文件中的全局符号,即外部可见的符号。

    ### 示例3:显示符号与源文件的对应关系

    “`
    nm -o a.out
    “`

    该命令将显示a.out可执行文件中的符号表,并列出每个符号对应的源文件名称和行号。

    ### 示例4:按地址顺序显示符号

    “`
    nm -a a.out
    “`

    该命令将按照地址的顺序显示a.out可执行文件中的符号表。

    ### 示例5:只显示动态符号

    “`
    nm -d a.out
    “`

    该命令将只显示a.out可执行文件中的动态符号,即在程序运行时动态加载的符号。

    ### 示例6:显示文件的依赖关系

    “`
    nm -l a.out
    “`

    该命令将显示a.out可执行文件的依赖关系,包括依赖的共享库。

    ## 4. 操作流程

    通过上述示例,可以看出nm命令的操作流程如下:

    1. 执行`nm`命令,并指定要查看的文件(可以是可执行文件、目标文件或共享库)。
    2. 运行`nm`命令,并根据需求选择适当的选项。
    3. 根据选项的不同,`nm`命令将显示相应的符号信息。
    4. 根据需要,可以使用其他选项组合或使用管道符(`|`)将`nm`命令的输出传递给其他命令进行进一步处理。

    ## 5. 总结

    Linux nm命令是一个用于查看和分析程序中符号表的实用工具。通过使用nm命令,我们可以查看程序中的符号信息,如符号名称、地址、类型等,从而帮助我们进行程序调试、分析程序的依赖关系等工作。可以根据需求选择适当的选项,以获取所需的符号信息。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部