linux上nm命令

不及物动词 其他 113

回复

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

    nm命令是在Linux系统中常用的一个命令,用于查看目标文件中的符号表和重定位信息。它可以用于分析可执行文件、动态链接库和目标文件的符号信息,对于程序员来说是一种非常有用的工具。

    使用nm命令可以获取目标文件中的符号表信息,包括函数、变量和常量等。它可以显示符号的名称、类型、地址和大小等详细信息。通过查看符号表,我们可以了解到程序中有哪些符号,它们所在的地址以及它们的类型,对于程序的调试和分析非常有帮助。

    nm命令的基本用法是将需要查看符号表的目标文件作为参数传递给nm命令。例如,要查看一个可执行文件的符号表,可以输入如下命令:

    nm executable_file

    其中,executable_file是要查看符号表的可执行文件的文件名。如果要查看一个动态链接库或者目标文件的符号表,也是类似的用法。

    nm命令会输出该目标文件中的所有符号信息。每一行输出表示一个符号,包括符号的地址、类型和名称等信息。常见的符号类型包括函数(以T表示)、变量(以D表示)、弱类型符号(以W表示)等。可以根据符号类型来了解它们的作用和属性。

    除了查看符号表,nm命令还可以显示目标文件的重定位信息。重定位信息描述了目标文件中的符号如何被链接器处理,在程序运行时如何被动态加载。重定位信息对于理解程序的运行机制和调试程序非常有帮助。

    总结来说,nm命令是一个非常常用的工具,可以用来查看目标文件中的符号表和重定位信息。它对于程序员来说是一种非常有用的工具,可以帮助我们了解程序的结构和运行机制。熟练掌握nm命令的使用方法,对于开发和调试程序都是非常有帮助的。

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

    NM命令是Linux系统中的一个工具,用于查看二进制文件(可执行文件、共享库等)中的符号表。符号表是一个记录了变量、函数和其他程序实体名称和地址的列表。NM命令可以帮助开发人员了解程序的结构、调试程序并解决问题。

    以下是关于Linux上的NM命令的一些重要信息:

    1. 命令语法:nm [OPTION]… [FILE]…
    nm命令的基本语法是nm [选项]… [文件]…,其中选项是用于控制输出格式和行为的参数,文件是要分析的二进制文件。

    2. 常用选项:
    -a:显示全部符号,包括以隐藏属性标记的符号。
    -C:尝试对C++符号进行 demangling。
    -G:只显示外部全局符号。
    -r:按照地址排序。
    -t:按照符号类型排序。

    3. 输出格式:
    nm命令的输出包含三列:符号值、类型和符号名称。符号值是符号的地址或偏移量,类型表示符号的类别(如U表示未定义符号,T表示文本段中的函数,D表示数据段中的符号等),符号名称是符号的标识符。

    4. 使用示例:
    以下是几个nm命令的使用示例:
    – nm a.out:显示a.out文件中的符号表。
    – nm -t a.o b.o:对a.o和b.o文件的符号表按照类型进行排序。
    – nm -G libfoo.so:显示共享库libfoo.so中的外部全局符号。

    5. NM命令的扩展工具:
    除了nm命令外,Linux系统还提供了一些与之相关的扩展工具,如objdump和readelf。这些工具提供了更多关于二进制文件的信息,如存储段、重定位条目等,在进行调试和分析时非常有用。

    总结:NM命令是Linux系统中的一个工具,用于查看二进制文件中的符号表。使用该命令可以了解程序的结构、调试程序并解决问题。通过设置不同的选项,可以控制输出的格式和行为。除了nm命令,还有一些其他的工具可以提供更多关于二进制文件的信息。

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

    nm命令是一个用于分析二进制文件的命令,它可以显示目标文件中的符号表以及动态链接库中的符号表。通过使用nm命令,可以获取到目标文件或者库文件中定义的函数、变量、常量等符号信息。

    1. 基本用法
    nm命令的基本用法是在终端输入`nm`命令,然后加上要分析的目标文件的路径。

    “`
    nm [options] file…
    “`

    2. 选项说明
    – `-A`或`–print-file-name`: 在每个输出前打印文件名。
    – `-a`或`–debug-syms`: 输出包括调试符号。
    – `-B`或`–format=bsd`: 格式化输出为BSD风格。
    – `-C`或`–demangle`: 格式化输出符号名,去除编码的符号名。
    – `-D`或`–dynamic`: 只显示动态链接符号。
    – `-e`或`–extern-only`: 只显示外部符号。
    – `-g`或`–extern-only`: 只显示外部符号。
    – `-n`或`–numeric-sort`: 按照数值排序。
    – `-o`或`–no-sort`: 不进行排序。
    – `-p`或`–portability`: 以可移植的格式输出。
    – `-P`或`–no-undefined`: 只显示已定义的符号。
    – `-r`或`–reverse-sort`: 反向排序。
    – `-S`或`–size-sort`: 按照大小排序。
    – `-t`或`–print-size`: 显示符号大小。
    – `-u`或`–undefined-only`: 只显示未定义的符号。
    – `-U`或`–defined-only`: 只显示已定义的符号。
    – `-V`或`–version`: 显示nm命令的版本信息。
    – `-W`或`–wide`: 使用更宽的输出。

    3. 实例演示
    假设我们有一个名为sample.c的源文件,我们可以通过以下步骤演示nm命令的使用。

    用以下命令编译我们的源文件:

    “`
    gcc -o sample sample.c
    “`

    运行以下命令来使用nm分析二进制文件:

    “`
    nm sample
    “`

    这将会输出binary file中的符号信息。

    4. 结论
    nm命令是一个非常有用的工具,可以用来分析二进制文件中的符号信息。通过使用不同的选项,我们可以按照不同的方式输出符号信息,从而满足我们的需求。在开发和调试过程中,nm命令可以帮助我们更好地了解目标文件和库文件中的符号信息,有助于我们理解和调试代码。

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

400-800-1024

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

分享本页
返回顶部