How can I get the architecture of a '.a' file? How can I get the architecture of a '.a' file? linux linux

How can I get the architecture of a '.a' file?


You can also skip the ar command and use readelf, via something like:

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 80386File: libxslt.a(xslt.o)  Class:                             ELF32  Machine:                           Intel 80386... #Trimmed this, it goes on a bitFile: libxslt.a(transform.o)  Class:                             ELF32  Machine:                           Intel 80386File: libxslt.a(security.o)  Class:                             ELF32  Machine:                           Intel 80386[00:32:24] /usr/lib $

In case it's relevant, here's the other information that you can get from readelf -h. I just trimmed the above with grep, obviously:

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

That output is for one of the object files in libxslt.a, but it gives the same information for each file.


Use

lipo -info libExample.a

It will Who the architecture it build for. Other functions like otool or file doesn't give the exact answer and sometimes it to verbose to get the correct information.


objdump is another option:

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