手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

elffile(1)

名称

elffile - 标识 ELF 文件类型

用法概要

elffile [-s basic | detail | summary] filename...

描述

elffile 实用程序是 file 命令的专用变体,用于与 ELF 目标文件以及相关文件类型结合使用。elffile 可标识以下类型的文件:

归档文件

除了 file 提供的信息外,elffile 还可标识归档成员的类型。

ELF 目标文件/运行时链接程序配置文件

elffile 提供的输出与 file 相同

其他类型的文件均报告为非 ELF 文件。不尝试对此类文件进行详细分类。建议使用 file 实用程序完成一般性的文件识别。

选项

支持以下选项:

–s basic | detail | summary

指定要提供的输出样式

basic

file 使用的相同格式生成一行描述。

detail

对于非归档文件,summary 的输出与 basic 的输出相同。处理归档文件时,基本输出行后显示每个归档成员的一行输出。

summary

对于非归档文件,summary 的输出与 basic 的输出相同。处理归档文件时,会在基本输出的末尾添加归档内容的摘要描述。如果未指定 –s 选项,elffile 缺省情况下将使用 summary 样式。

附注

使用摘要样式时,为归档文件生成的输出取决于归档内容。如果归档文件包含同一平台的同种目标文件集合,则平台详细信息的显示格式采用显示单一目标文件的格式。否则,生成摘要描述。使用详细信息样式可获取关于各个归档成员的更具体的信息。

摘要样式和详细信息样式均需要检查归档文件的每个成员。执行速度与归档成员数量成正比,如果归档文件非常大,速度会很慢。

示例

示例 1 显示归档文件的摘要输出

以下示例显示了 elffile 针对不同内容的归档文件所生成的摘要输出。使用以下归档文件。

same_elf.a

单个平台的 ELF 目标文件。

mixed_elf.a

多个平台的 ELF 目标文件。

mixed.a

ELF 目标文件和非 ELF 文件。

not_elf.a

非 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]

退出状态

将返回以下退出值:

0

成功完成

>0

出现错误

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/linker
接口稳定性
Committed(已确定)

另请参见

ar(1)dump(1)elfdump(1)file(1)

Oracle Solaris 11.2 链接程序和库指南