我怎样才能得到'.a'文件的体系结构?

我有一个.a文件,我想从中获取架构信息。 在file.a: current ar archive运行file myFile.a file.a: current ar archive 。 我怎样才能获得更多关于该文件包含的架构的信息?

您也可以跳过ar命令并使用readelf ,通过如下所示:

readelf -h <archive>.a | grep 'Class\|File\|Machine'

 [00:32:15] /usr/lib $ readelf -h libxslt.a | grep 'Class\|File\|Machine' File: libxslt.a(attrvt.o) Class: ELF32 Machine: Intel 80386 File: libxslt.a(xslt.o) Class: ELF32 Machine: Intel 80386 ... #Trimmed this, it goes on a bit File: libxslt.a(transform.o) Class: ELF32 Machine: Intel 80386 File: libxslt.a(security.o) Class: ELF32 Machine: Intel 80386 [00:32:24] /usr/lib $ 

如果是相关的,可以从readelf -h得到的其他信息。 我刚刚用grep修改了上面的内容,显然:

 File: libxslt.a(security.o) ELF Header: Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 Class: ELF32 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: REL (Relocatable file) Machine: Intel 80386 Version: 0x1 Entry point address: 0x0 Start of program headers: 0 (bytes into file) Start of section headers: 2548 (bytes into file) Flags: 0x0 Size of this header: 52 (bytes) Size of program headers: 0 (bytes) Number of program headers: 0 Size of section headers: 40 (bytes) Number of section headers: 16 Section header string table index: 13 

该输出是针对libxslt.a 一个目标文件,但它为每个文件提供相同的信息。

使用

lipo -info libExample.a

它将为谁构建它的体系结构。 其他功能,如otool或文件不能给出确切的答案,有时它会详细获取正确的信息。

objdump是另一种选择:

 objdump -a file.a|grep 'file format' 

http://linux.die.net/man/1/ar

从档案中提取目标文件并用文件(1),nm(1)等检查它们

我会建议使用objdump而不是lipo。 objdump提供比lipo更详细的信息。