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

前端 未结 5 1414
星月不相逢
星月不相逢 2020-12-24 06:21

I have a .a file from which I want to get architecture information. Running file myFile.a results in file.a: current ar archive. How can I get more

相关标签:
5条回答
  • 2020-12-24 06:39

    objdump is another option:

    objdump -a file.a|grep 'file format'
    
    0 讨论(0)
  • 2020-12-24 06:40

    I would suggest using objdump instead of lipo. objdump provides detailed information than lipo.

    0 讨论(0)
  • 2020-12-24 06:47

    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 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 $
    

    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.

    0 讨论(0)
  • 2020-12-24 06:53

    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.

    0 讨论(0)
  • 2020-12-24 07:00

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

    extract the object files from the archive and inspect them with file(1), nm(1), etc.

    0 讨论(0)
提交回复
热议问题