アーキテクチャ情報を取得したい.aファイルがあります。ランニング 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
内のオブジェクトファイルのoneに対するものですが、各ファイルに同じ情報を提供します。
使用する
リポ情報libExample.a
それは誰のために構築するアーキテクチャになります。 otoolやfileのような他の関数は正確な答えを与えず、正しい情報を得るために冗長にすることもあります。
objdump
は別のオプションです:
objdump -a file.a|grep 'file format'
アーカイブからオブジェクトファイルを抽出し、file(1)、nm(1)などで検査します。
リポの代わりにobjdumpを使用することをお勧めします。 objdumpはlipoよりも詳細な情報を提供します。