2010-09-18 11 views

Odpowiedz

30

Można również pominąć komendy ar i wykorzystać readelf, poprzez coś podobnego :

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 $ 

Jeśli jest to istotne, oto inne informacje, które można uzyskać od readelf -h. I właśnie przycięta z grep wyżej, oczywiście:

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 

To wyjście jest dla jednej plików obiektowych w libxslt.a, ale daje te same informacje dla każdego pliku.

+1

Polecam dodanie "Maszyny" do tamtej listy. Obejmują one informacje o konkretnym CPU, dla którego tworzone są pliki obiektów, a nie tylko o tym, czy jest to 32- czy 64-bitowy, czy cokolwiek innego. – cHao

+0

@ cHao: Tak, też o tym myślałem. Robię kolejną edycję (i dodałem całe wyjście 'readelf -h'). – eldarerathis

+0

Dzięki! Właśnie tego szukałem. – Mike

2

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

wyodrębnić pliki z archiwum obiektów i sprawdzać je z pliku (1), Nowy Meksyk (1), itp

+0

Czy istnieje sposób na uzyskanie informacji o architekturze bez wydobywania jej zawartości (przynajmniej bez pozostawienia jakichkolwiek pozostałości)? – Mike

+0

Nie. jer

+0

@jer, tak naprawdę można to zrobić za pomocą 'readelf' lub' objdump'. –

5

objdump ma innej opcji:

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

Zastosowanie

lipo -info libExample.a

Będzie Kto architektura budować dla. Inne funkcje, takie jak otool lub plik, nie dają dokładnej odpowiedzi, a czasami są pełne, aby uzyskać prawidłowe informacje.

+2

Lipo wydaje się być specyficzne dla OS X. – MetalGodwin

0

Sugerowałbym użycie objdump zamiast lipo. objdump dostarcza szczegółowych informacji niż lipo.

Powiązane problemy