linux下nm命令

fiy 其他 358

回复

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

    nm命令是Linux系统中一个很有用的命令,它主要用于查看二进制文件中的符号表和共享库中的动态符号。下面将详细介绍nm命令的使用方法和常见参数。

    1. 命令语法:
    nm [参数] [文件名]

    2. 常见参数:
    -A : 以反序显示符号表
    -C : 以C++的形式显示符号表
    -D : 显示动态符号表(默认)
    -S : 显示符号表中完整的符号信息
    -s : 显示符号表中的大小信息
    -u : 仅显示未定义的符号
    -t : 以顺序显示符号表
    -v : 显示所有包含指定符号表的文件

    3. 示例用法:
    a) 查看可执行文件中的符号表信息:
    nm executable_file

    b) 查看静态库中的符号表信息:
    nm static_library

    c) 查看共享库中的符号表信息:
    nm shared_library

    d) 显示符号表中完整的符号信息:
    nm -S executable_file

    e) 只显示未定义的符号:
    nm -u executable_file

    f) 查看符号表中的大小信息:
    nm -s executable_file

    g) 以反序显示符号表:
    nm -A executable_file

    h) 以C++的形式显示符号表:
    nm -C executable_file

    i) 显示所有包含指定符号表的文件:
    nm -v symbol_name

    j) 以顺序显示符号表:
    nm -t executable_file

    4. 结果解读:
    在使用nm命令后,会输出一些十六进制的地址和符号名称。常见的符号类型有函数、变量、未定义符号等。通过观察地址和符号名称,可以了解二进制文件或共享库中的符号信息。

    总之,nm命令是一个在Linux系统中查看二进制文件和共享库符号信息的常用工具,掌握了它的使用方法可以帮助我们更好地理解和调试程序。

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

    nm命令是一个用于查看目标文件(二进制文件)中符号表信息的工具。它可以用于查看编译后的可执行文件、共享库文件和目标文件中的符号信息,包括函数名称、变量名称和数据结构等。

    下面是Linux下nm命令的一些常用选项和用法:

    1. 显示符号表信息:
    使用nm命令最简单的用法是只指定目标文件的路径,例如:
    “`
    nm /path/to/file
    “`
    这将显示目标文件中的所有符号信息,包括符号的地址、类型和名称等。

    2. 过滤符号信息:
    可以结合使用选项来过滤显示的符号信息。常用的选项包括:
    – `–undefined-only`:只显示未定义的符号。
    – `-D`:只显示全局数据(变量)符号。
    – `-t`:按字母顺序显示符号表。

    例如,以下命令将只显示未定义的全局函数符号:
    “`
    nm -D -u /path/to/file
    “`

    3. 以指定的格式显示地址:
    使用选项`-o`可以指定nm命令显示地址的格式。常用的格式有:
    – `d`:十进制
    – `o`:八进制(默认)
    – `x`:十六进制

    例如,以下命令将使用十六进制格式显示符号的地址:
    “`
    nm -o /path/to/file
    “`

    4. 查看动态符号表:
    使用选项`-D`可以查看可执行文件或共享库文件的动态符号表(.dynsym节)。动态符号表中存储了共享库函数的符号信息。

    例如,以下命令将显示可执行文件中的动态符号表信息:
    “`
    nm -D /path/to/executable
    “`

    5. 查看调试信息:
    可以使用选项`-a`来查看目标文件的调试信息(.debug节)。调试信息中包含了编译源代码时的符号信息和调试用途的相关信息。

    例如,以下命令将显示目标文件的调试信息:
    “`
    nm -a /path/to/file
    “`

    总结:
    nm命令是一个在Linux系统下查看目标文件符号表信息的实用工具。它可以显示目标文件中的函数名称、变量名称和数据结构等符号信息。通过使用不同的选项和参数,可以根据需要过滤和格式化显示符号信息,以及查看动态符号表和调试信息。

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

    在Linux操作系统中,`nm`命令用于显示目标文件中的符号表(包括函数、变量等)信息。它可以用于分析可执行文件、静态库和动态库等文件的符号表信息。下面将从安装、基本用法和示例三个方面详细介绍`nm`命令。

    ## 1. 安装

    `nm`命令通常默认安装在Linux系统中。如果你的系统没有安装该命令,可以通过以下命令安装:

    – Debian/Ubuntu:
    “`
    sudo apt-get install binutils
    “`

    – CentOS/Fedora:
    “`
    sudo yum install binutils
    “`

    ## 2. 基本用法

    `nm`命令的基本语法如下:
    “`
    nm [option] [file]
    “`
    其中,`option`是可选的命令选项,而`file`是需要分析的目标文件。

    常用的选项包括:
    – `-A`:在符号名前显示符号的类型;
    – `-a`:在符号名前显示符号的地址;
    – `-C`:在C++符号引用前加上类型信息;
    – `-r`:按照内存地址的顺序对符号进行排序;
    – `-U`:只显示未定义的符号。

    以下是一些常见的用法示例:

    ### 示例1:显示目标文件的符号表
    “`
    nm example.o
    “`
    这将显示`example.o`文件中的符号表。

    ### 示例2:显示目标文件的符号地址
    “`
    nm -a example.o
    “`
    运行上述命令,可以显示`example.o`文件中的符号表,同时显示每个符号的地址。

    ### 示例3:以内存地址顺序排序符号表
    “`
    nm -r example.o
    “`
    这将按照内存地址顺序对`example.o`文件中的符号进行排序。

    ## 3. 操作流程及注意事项

    使用`nm`命令的操作流程如下:

    1. 打开终端,并进入目标文件所在的目录。
    2. 运行`nm`命令,使用适当的选项和目标文件名。
    3. 分析输出的符号表信息,可以根据需要查找特定的符号。

    需要注意的是,`nm`命令只能分析二进制文件的符号表,对于源代码文件无法起效。此外,在分析动态库或可执行文件时,可能需要使用`-D`选项来显示调试符号信息。

    另外,`nm`命令默认输出以十六进制表示的内存地址,如果需要以十进制或其他方式显示地址,可以通过选项进行调整。

    总结:`nm`命令是Linux系统中一个用于显示符号表信息的强大工具。通过该命令,我们可以查看可执行文件、静态库和动态库等文件的符号表,以便进行分析和调试工作。熟练使用`nm`命令可以提高我们对代码的理解和调试的效率。

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

400-800-1024

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

分享本页
返回顶部