跳过导航链接 | |
退出打印视图 | |
手册页第 1 部分:用户命令 Oracle Solaris 11.1 Information Library (简体中文) |
- 标识 ELF 文件类型
elffile [-s basic | detail | summary] filename...
elffile 实用程序是 file 命令的专用变体,用于与 ELF 目标文件以及相关文件类型结合使用。elffile 可标识以下类型的文件:
除了 file 提供的信息外,elffile 还可标识归档成员的类型。
elffile 提供的输出与 file 相同
其他类型的文件均报告为非 ELF 文件。不尝试对此类文件进行详细分类。建议使用 file 实用程序完成一般性的文件识别。
支持以下选项:
指定要提供的输出样式
以 file 使用的相同格式生成一行描述。
对于非归档文件,summary 的输出与 basic 的输出相同。处理归档文件时,基本输出行后显示每个归档成员的一行输出。
对于非归档文件,summary 的输出与 basic 的输出相同。处理归档文件时,会在基本输出的末尾添加归档内容的摘要描述。如果未指定 -s 选项,elffile 缺省情况下将使用 summary 样式。
使用摘要样式时,为归档文件生成的输出取决于归档内容。如果归档文件包含同一平台的同种目标文件集合,则平台详细信息的显示格式采用显示单一目标文件的格式。否则,生成摘要描述。使用详细信息样式可获取关于各个归档成员的更具体的信息。
摘要样式和详细信息样式均需要检查归档文件的每个成员。执行速度与归档成员数量成正比,如果归档文件非常大,速度会很慢。
示例 1 显示归档文件的摘要输出
以下示例显示了 elffile 针对不同内容的归档文件所生成的摘要输出。使用以下归档文件。
单个平台的 ELF 目标文件。
多个平台的 ELF 目标文件。
ELF 目标文件和非 ELF 文件。
非 ELF 文件。
归档文件的摘要输出取决于归档成员的类型。
example% elffile same_elf.a mixed_elf.a mixed.a not_elf.a same_elf.a: current ar archive, 32-bit symbol table, ELF 64-bit LSB relocatable AMD64 Version 1 mixed_elf.a: current ar archive, 32-bit symbol table, mixed ELF content mixed.a: current ar archive, 32-bit symbol table, mixed ELF and non-ELF content not_elf.a: current ar archive, non-ELF content
示例 2 过滤归档文件的详细输出
elffile 的详细输出为归档文件生成一行输出,后面为每个归档成员显示一行输出。可以轻松地过滤此输出,以便用各种格式显示信息。以下示例使用归档文件 libCstd.a 说明了此特点,该归档文件包含 64 位 x86 系统的可重定位目标文件。此归档文件未经过滤的 elffile 详细输出如下所示:
example% elffile -s detail libCstd.a libCstd.a: current ar archive, 32-bit symbol table libCstd.a(bitset.o): ELF 64-bit LSB relocatable AMD64 Version 1 [CMOV] libCstd.a(complex.o): ELF 64-bit LSB relocatable AMD64 Version 1 [SSE2 SSE CMOV FPU] libCstd.a(limits.o): ELF 64-bit LSB relocatable AMD64 Version 1 [SSE2 SSE FPU] libCstd.a(limitsinit.o): ELF 64-bit LSB relocatable AMD64 Version 1 libCstd.a(stdexcept.o): ELF 64-bit LSB relocatable AMD64 Version 1 [SSE CMOV] ...
此输出显示每个目标文件均标记有运行所需的硬件功能。这些功能标记因每个目标文件中的代码而异。以下命令对 elffile 的输出进行了过滤,以标识每个唯一的功能掩码,并计算归档文件中每个掩码对应的目标文件数量。sed 命令用于从输出中删除归档成员名称,这样,每个具有相同功能掩码的归档成员的输出将会相同。sort 命令用于将这些相同的行归在一起,uniq 命令用于将每个唯一的组替换为该组中的一行,并在该行的前面显示该行在该组出现的次数。
example% elffile -s detail libCstd.a | sed 's,(.*),,' | sort -f | uniq -c 1 libCstd.a: current ar archive, 32-bit symbol table 777 libCstd.a: ELF 64-bit LSB relocatable AMD64 Version 1 1 libCstd.a: ELF 64-bit LSB relocatable AMD64 Version 1 [CMOV FPU] 126 libCstd.a: ELF 64-bit LSB relocatable AMD64 Version 1 [CMOV] 12 libCstd.a: ELF 64-bit LSB relocatable AMD64 Version 1 [FPU] 69 libCstd.a: ELF 64-bit LSB relocatable AMD64 Version 1 [SSE CMOV] 2 libCstd.a: ELF 64-bit LSB relocatable AMD64 Version 1 [SSE2 CMOV] 3 libCstd.a: ELF 64-bit LSB relocatable AMD64 Version 1 [SSE2 SSE CMOV FPU] 3 libCstd.a: ELF 64-bit LSB relocatable AMD64 Version 1 [SSE2 SSE CMOV] 1 libCstd.a: ELF 64-bit LSB relocatable AMD64 Version 1 [SSE2 SSE FPU] 2 libCstd.a: ELF 64-bit LSB relocatable AMD64 Version 1 [SSE2 SSE] 20 libCstd.a: ELF 64-bit LSB relocatable AMD64 Version 1 [SSE2] 4 libCstd.a: ELF 64-bit LSB relocatable AMD64 Version 1 [SSE]
将返回以下退出值:
成功完成
出现错误
有关下列属性的说明,请参见 attributes(5):
|