2010-09-18 7 views

Respuesta

30

También se puede saltar el comando ar y utilizar readelf, a través de algo así como :

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 $ 

En caso de que sea relevante, esta es la otra información que puede obtener de readelf -h. Acabo recortado con lo anterior grep, obviamente:

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 

que la producción es para uno de los ficheros objeto en libxslt.a, pero le da la misma información para cada archivo.

+1

Recomienda agregar 'Máquina' a la lista allí. Eso incluirá información sobre la CPU específica para la que están hechos los archivos objeto, en lugar de solo si es de 32 o 64 bits o lo que sea. – cHao

+0

@cHao: Sí, yo también pensé en eso. Estoy haciendo otra edición (y agregué la salida completa de 'readelf -h'). – eldarerathis

+0

¡Gracias! Esto es exactamente lo que estaba buscando. – Mike

2

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

extraer los archivos de objeto del archivo y inspeccionarlos con el archivo (1), nm (1), etc.

+0

¿Hay alguna forma de obtener información de arquitectura sin extraer su contenido (al menos sin dejar ningún residuo)? – Mike

+0

No. jer

+0

@jer, en realidad, puede hacerlo con 'readelf' o' objdump'. –

5

objdump es otra opción:

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

Uso

lipo -info libExample.a

Será Quién es la arquitectura para construir. Otras funciones como otool o archivo no dan la respuesta exacta y, a veces, es prolija para obtener la información correcta.

+2

lipo parece ser específico de OS X. – MetalGodwin

0

Sugeriría usar objdump en lugar de lipo. objdump proporciona información detallada que lipo.

Cuestiones relacionadas