readelf 命令常用用法总结

NAME

readelf - 显示有关ELF文件的信息。

SYNOPSIS

readelf [-a|--all]
       [-h|--file-header]
       [-l|--program-headers|--segments]
       [-S|--section-headers|--sections]
       [-g|--section-groups]
       [-t|--section-details]
       [-e|--headers]
       [-s|--syms|--symbols]
       [-n|--notes]
       [-r|--relocs]
       [-u|--unwind]
       [-d|--dynamic]
       [-V|--version-info]
       [-A|--arch-specific]
       [-D|--use-dynamic]
       [-x <number or name>|--hex-dump=<number or name>]
       [-p <number or name>|--string-dump=<number or name>]
       [-R <number or name>|--relocated-dump=<number or name>]
       [-c|--archive-index]
       [-w[lLiaprmfFsoR]|
        --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,
        =macro,=frames,=frames-interp,=str,=loc,=Ranges]]
       [-I|-histogram]
       [-v|--version]
       [-W|--wide]
       [-H|--help]
       elffile...

DESCRIPTION

readelf显示有关一个或多个ELF格式对象文件的信息。选项控制要显示的特定信息。
elffile …是要检查的目标文件。 支持32位和64位ELF文件,以及包含ELF文件的存档。
该程序执行与objdump类似的功能,但它更详细,它独立于BFD库存在,所以如果BFD中有错误则readelf不会受到影响。

OPTIONS

这里显示的长和短形式的选项是等价的。 除了-v-H之外,必须至少提供一个选项。

  • -a --all 相当于指定--file-header --program-headers --sections --symbols --relocs --dynamic --notes和--version-info
  • -h --file-header 显示文件开头的ELF头中包含的信息
  • -l --program-headers --segments 显示文件的segment头中包含的信息(如果有)。
  • -S --sections --section-headers 显示文件的section头中包含的信息(如果有)。
  • -g --section-groups 显示文件的section group中包含的信息(如果有)。
  • -t --section-details 显示详细的section信息。意味着-S
  • -s --symbols --syms 显示文件的symbol table section中的条目(如果有)。
  • -e --headers 显示文件中的所有headers。相当于-h -l -S
  • -n --notes 显示NOTE segment(和/或)section的内容(如果有)。
  • -r --relocs 显示文件relocation section的内容(如果有)。
  • -u --unwind 显示文件的unwind section的内容(如果有)。目前仅支持IA64 ELF文件的unwind section
  • -d --dynamic 显示文件dynamic section的内容(如果有)。
  • -V --version-info 显示文件中version section的内容,如果存在。
  • -A --arch-specific 显示文件中特定于体系结构的信息(如果有)。
  • -D --use-dynamic 显示符号时,此选项使readelf使用文件dynamic section中的符号表,而不是symbol section中的符号表。
  • -x <number or name> --hex-dump=<number or name> 以十六进制字节显示indecated section的内容。一个数字通过索引section表标识一个特定的section;任何其他string标识目标文件中具有该名称的所有section。
  • -R <number or name> --relocated-dump=<number or name> 以十六进制字节显示indecated section的内容。一个数字通过索引section表标识一个特定的section;任何其他string标识目标文件中具有该名称的所有section。该section的内容将在显示之前重新定位。
  • -p <number or name> --string-dump=<number or name> 将indicated section的内容显示为可打印字符串。一个数字通过索引section表标识一个特定的section;任何其他string标识目标文件中具有该名称的所有section。
  • -c --archive-index 显示二进制归档的header部分中包含的文件符号索引信息。对ar执行与t命令相同的功能,但不使用BFD库。
  • -w[lLiaprmfFsoR] --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges] 显示文件中debug section的内容(如果存在)。 如果后面有一个可选的字母或单词,则只会转储在这些特定部分中找到的数据。
    注意:=codedline选项将显示.debug_line section解释后的内容,而=rawline选项将以原始格式转储内容。
  • -I --histogram 显示符号表的内容时,显示桶列表长度的直方图。
  • -v --version 显示readelf的版本号。
  • -W --wide 不破坏输出线以适应80列。 默认情况下,readelf会断开64位ELF文件的section header和segment 列表行,以便它们适合80列。 此选项使readelf打印每个节标题resp。 每个segment只有一行,在80列以上的终端上可读性更高。
  • -H --help 显示readelf理解的命令行选项。
  • @file
    从文件中读取命令行选项。读取的选项将替换原始@file选项。 如果文件不存在或无法读取,则该选项将按字面处理,而不会被删除。
    文件中的选项由空格分隔。通过用单引号或双引号括起整个选项,可以在选项中包含空格字符。可以通过在字符前加上反斜杠来包含任何字符(包括反斜杠)。该文件本身可能包含其他@file选项; 任何此类选项将以递归方式处理。