linux常用命令nm

不及物动词 其他 59

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    nm命令是Linux系统中常用的命令之一,主要用于查看可执行文件或者目标文件中的符号表信息。下面是nm命令的详细介绍:

    1. 命令格式:
    nm [选项]… 文件…

    2. 常用选项:
    -a:显示全部符号信息,包括符号的值、类型和定义所在的文件名;
    -g:只显示全局符号信息;
    -u:只显示未定义的符号信息;
    -p:不要对符号进行排序,保持输入的顺序;
    -D:显示动态符号信息;
    -C:显示C++符号信息;
    -f:以目标文件的形式输出符号信息;
    -S:显示符号在源文件中的位置;
    -r:将所有符号以类似于readelf的格式输出;
    -l:显示符号表的调试信息。

    3. 使用示例:
    3.1 查看可执行文件中的符号表信息:
    nm a.out
    3.2 查看目标文件中的符号表信息:
    nm -o myobject.o
    3.3 只显示全局符号信息:
    nm -g a.out
    3.4 只显示未定义的符号信息:
    nm -u a.out
    3.5 以目标文件的形式输出符号信息:
    nm -f a.out > symbols.txt

    4. 符号类型解释:
    4.1 T:该符号是一个函数或者数据对象,其地址由nm库中的一个外部符号提供;
    4.2 t:该符号是一个函数或者数据对象,其地址由局部链接器符号提供;
    4.3 U:该符号是一个未定义的外部符号;
    4.4 V:该符号是一个常量或者一个已初始化的数据对象;
    4.5 W:该符号是一个未初始化的数据对象;
    4.6 C:该符号是一个未初始化的常量;
    4.7 Z:该符号是一个在弱符号消除之前定义过的未引用符号。

    通过使用nm命令,我们可以方便地查看可执行文件或者目标文件中的符号表信息,从而帮助我们了解程序的结构和依赖关系,对于软件开发和调试来说非常有用。在日常使用中,也可以通过-nm命令来查找某个函数或者变量在哪个文件中定义。

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

    nm是Linux系统下的一个常用命令,用于查看可执行文件、目标文件和共享库中的符号表信息。这个命令可以列出这些文件中定义的所有符号,包括函数、变量和类型等。

    以下是关于nm命令的常用用法和功能解析:

    1. 列出符号表信息:nm命令的最基本用法就是列出一个文件的符号表信息。使用命令`nm filename`,其中filename是要查看符号表的文件名。命令将输出文件中定义的所有符号。

    2. 列出函数地址:默认情况下,nm命令会列出函数的地址。使用命令`nm -a filename`,可以显示函数的地址以及其对应的函数名。

    3. 过滤符号类型:nm命令可以根据符号的类型进行过滤显示。例如,使用命令`nm -D filename`,只会显示动态符号表中的符号,而不显示静态符号表中的符号。

    4. 列出未定义符号:使用命令`nm -u filename`,可以列出文件中未定义的符号。这对于检查链接错误以及解决共享库依赖问题非常有用。

    5. 列出相应符号所属的目标文件:对于共享库文件来说,使用命令`nm -a filename`会显示每个符号所在的目标文件(即库文件)。这对于调试和解决库依赖问题也非常有帮助。

    总结:nm命令是Linux系统下一个用于查看符号表信息的常用命令。它可以列出文件中定义的所有符号,显示函数的地址和名称,并可以根据符号类型进行过滤显示。此外,nm命令还可以列出未定义符号以及符号所属的目标文件。使用nm命令可以方便地进行调试和解决库依赖问题。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    nm命令是Linux系统中的一个常用命令,用于显示目标文件或者可执行文件中的符号表。nm命令可以帮助我们查看可执行文件或者目标文件中的符号信息,包括函数、全局变量、局部变量等。

    下面我们将从命令的基本用法、标志选项、示例等方面介绍nm命令的使用。

    ## 一、基本用法
    nm命令的基本语法如下:
    “`shell
    nm [选项] [文件名]
    “`
    选项包括以下常用的选项:
    – -A:以十进制显示符号值
    – -a:以四列的形式显示全部符号
    – -C:显示C++风格的符号
    – -D:仅显示动态符号表中的符号
    – -d:仅显示动态符号表中的动态符号
    – -p:显示精确的符号位置
    – -u:显示未定义的符号
    – -r:按照符号的地址排序
    – -s:按照符号的字母序排序
    – -l:按照符号的大小排序
    – -t:按照符号类型排序

    ## 二、操作流程
    nm命令的操作流程一般包括以下几个步骤:
    1. 打开目标文件或可执行文件。
    2. 解析文件中的符号表。
    3. 根据选项对符号进行过滤和排序。
    4. 输出符号信息。

    ## 三、示例
    ### 示例1:显示目标文件中的符号表
    “`shell
    nm test.o
    “`
    以上命令将显示test.o文件中的符号表信息。

    ### 示例2:显示可执行文件中的符号表
    “`shell
    nm a.out
    “`
    以上命令将显示a.out可执行文件中的符号表信息。

    ### 示例3:显示符号表中的所有符号
    “`shell
    nm -A -a test.o
    “`
    以上命令将以十进制显示test.o文件中的所有符号信息。

    ### 示例4:显示符号表中的未定义符号
    “`shell
    nm -u test.o
    “`
    以上命令将显示test.o文件中的未定义符号信息。

    ### 示例5:按照符号地址排序
    “`shell
    nm -r test.o
    “`
    以上命令将按照符号的地址对test.o文件中的符号进行排序,并显示排序结果。

    ### 示例6:按照符号类型排序
    “`shell
    nm -t test.o
    “`
    以上命令将按照符号的类型对test.o文件中的符号进行排序,并显示排序结果。

    ## 四、小结
    nm命令是Linux系统中的一个常用命令,用于显示目标文件或者可执行文件中的符号表。通过该命令,我们可以查看文件中的符号信息,包括函数、全局变量、局部变量等。我们可以根据选项对符号进行过滤和排序,以便更方便地查看符号信息。

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

400-800-1024

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

分享本页
返回顶部