linux联网命令nm

不及物动词 其他 124

回复

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

    nm命令是Linux系统中一个用于查看和分析目标文件中符号表的工具。它的主要作用是列出目标文件中的符号,包括函数名、变量名和常量名等。nm命令通常用于开发和调试过程中,可以帮助开发人员解决符号解析问题、跟踪函数调用关系等。

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

    1. -A 或 –debug-syms:显示调试信息。
    2. -B 或 –print-file-name:在每个符号前打印出符号所在的文件名。
    3. -C 或 –demangle:将C++函数名中的编码还原成可读形式。
    4. -D 或 –dynamic:显示动态符号表。
    5. -f 或 –format=FORMAT:指定输出格式,可以是bsd、posix或sysv。
    6. -p 或 –portability:使用POSIX标准输出格式。
    7. -s 或 –print-size:显示符号大小。
    8. -t 或 –no-sort:不进行排序,按照文件中出现的顺序显示符号。
    9. -U 或 –undefined-only:只显示未定义的符号。
    10. -u 或 –defined-only:只显示已定义的符号。

    使用nm命令时,我们需要指定目标文件,可以是可执行文件、静态库文件或共享库文件。

    例如,命令”nm -A -s -t demo.o”会显示目标文件demo.o中的符号表,并按照文件中出现的顺序进行排序。命令”nm -D -u mylib.so”会显示动态库文件mylib.so中的未定义的符号。通过适当的选项组合,我们可以根据具体的需求来使用nm命令进行符号表的分析和查看。

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

    Linux系统中的`nm`命令是用于查看目标文件中符号表的工具。它可以列出目标文件(可执行文件、共享库等)中的所有符号以及它们的地址、类型和其他相关信息。以下是关于`nm`命令的五个重要信息。

    1. 显示所有符号:`nm`命令可以显示目标文件中的所有符号。每个符号包括函数名、变量名或其他标识符。通过查看这些符号,可以了解目标文件中包含的所有函数和变量。例如,`nm `将会显示目标文件中的所有符号。

    2. 符号类型:`nm`命令显示的每个符号都有一个类型,包括函数、变量、未定义符号等。符号类型对于了解目标文件中定义的符号非常重要。例如,通过查看符号类型,可以知道某个符号是一个函数还是一个变量,甚至可以确定是否缺失某个定义。符号类型由一个或多个字母表示,例如 ‘T’表示一个正常的函数,’D’表示一个静态变量等。

    3. 符号地址:对于每个符号,`nm`命令还会显示它的地址。这对于调试和定位特定符号非常重要。地址是一个十六进制数字,表示符号在目标文件中的位置。通常,函数地址表示函数的入口点,变量地址表示变量在内存中的位置。

    4. 动态符号表:`nm`命令还可以查看动态链接库文件(共享库)中的符号表。共享库是一种可以在不同程序之间共享的库文件,当程序需要使用共享库中的函数或变量时,会在运行时动态链接这些共享库。通过`nm`命令查看共享库的符号表,可以了解共享库中包含的函数和变量。

    5. 与其它命令的组合使用:`nm`命令可以与其他命令组合使用,以便进行更复杂的操作。例如,可以使用`nm`命令与`grep`命令结合,以仅显示符号表中包含特定关键词的符号。这样可以更快地查找特定函数或变量。另外,`nm`命令还可以与`objdump`命令一起使用,以便显示更详细的目标文件信息。

    总结起来,`nm`命令是一个非常有用的工具,可用于查看目标文件符号表中的符号、类型和地址。它对于调试和定位问题非常有帮助,并且可以与其他命令组合使用,以进行更复杂的操作。无论是开发人员还是系统管理员,都可以通过使用`nm`命令来了解目标文件的结构和内容。

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

    nm命令是一种用于在Linux系统中查看和修改二进制文件符号表的工具。符号表包含了程序中定义和使用的全局变量、函数、常量等信息。通过使用nm命令,可以分析和调试程序,查找符号冲突等问题。

    nm命令的基本语法如下:

    “`shell
    nm [OPTION]
    “`

    其中,`file`参数是要分析的二进制文件的路径。`OPTION`是可选参数,可以用于指定不同的操作模式和显示格式。

    在下面的内容中,我将详细介绍nm命令的一些常见用法和操作流程。

    ## 1. 查看二进制文件的符号表

    最基本的用法是使用nm命令查看一个二进制文件的符号表。只需要指定要分析的文件路径即可。

    “`shell
    nm
    “`

    命令执行后,将输出二进制文件中的符号表信息。一般情况下,输出结果会包含符号的地址、类型和名称。

    ## 2. 显示指定类型的符号

    如果只对某种类型的符号感兴趣,可以使用`-t`选项指定要显示的类型。常见的类型包括函数符号(`T`)、数据符号(`D`)和符号链接(`U`)等。

    “`shell
    nm -t
    “`

    例如,要显示文件中所有的函数符号,可以使用以下命令:

    “`shell
    nm -t T
    “`

    ## 3. 排序符号表

    默认情况下,nm命令会按照符号的地址进行排序。如果需要按照符号的名称进行排序,可以使用`-n`选项。

    “`shell
    nm -n
    “`

    ## 4. 显示未定义的符号

    使用`-u`选项,可以显示文件中未定义的符号。这些符号通常是在其他二进制文件中定义的,但是被当前文件引用。

    “`shell
    nm -u
    “`

    ## 5. 修改符号表

    nm命令还可以修改符号表。可以使用`-B`选项将未定义的符号定义为外部符号。

    “`shell
    nm -B
    “`

    ## 6. 将符号表输出到文件

    使用重定向操作符`>`,可以将符号表的输出保存到文件中。

    “`shell
    nm > symbols.txt
    “`

    这样,输出结果将会保存在当前目录下的`symbols.txt`文件中。

    最后,nm命令还有其他很多选项和功能,可以通过在终端中输入`man nm`命令查看更详细的帮助信息。

    以上就是Linux系统中使用nm命令进行符号表分析的方法和操作流程。希望对你有所帮助!

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

400-800-1024

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

分享本页
返回顶部