web-dev-qa-db-ja.com

'.a'ファイルのアーキテクチャを取得するにはどうすればよいですか?

アーキテクチャ情報を取得したい.aファイルがあります。ランニング file myFile.a結果はfile.a: current ar archive。ファイルに含まれているアーキテクチャに関する詳細情報を取得するにはどうすればよいですか?

27
Mike

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に対するものですが、各ファイルに同じ情報を提供します。

36
eldarerathis

使用する

リポ情報libExample.a

それは誰のために構築するアーキテクチャになります。 otoolやfileのような他の関数は正確な答えを与えず、正しい情報を得るために冗長にすることもあります。

16
pcbabu

objdumpは別のオプションです:

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

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

アーカイブからオブジェクトファイルを抽出し、file(1)、nm(1)などで検査します。

1
msw

リポの代わりにobjdumpを使用することをお勧めします。 objdumpはlipoよりも詳細な情報を提供します。

0