Как я могу получить архитектуру файла .a? - PullRequest
24 голосов
/ 18 сентября 2010

У меня есть файл .a, из которого я хочу получить информацию об архитектуре. Запуск file myFile.a приводит к file.a: current ar archive. Как я могу получить больше информации о том, какая архитектура содержится в файле?

Ответы [ 5 ]

34 голосов
/ 18 сентября 2010

Вы также можете пропустить команду 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, но он дает одинаковую информацию для каждого файла.

16 голосов
/ 13 декабря 2012

Использование

lipo -info libExample.a

Это будет Для кого архитектура, для которой он построен. Другие функции, такие как otool или file, не дают точного ответа, а иногда и подробного, чтобы получить правильную информацию.

8 голосов
/ 18 сентября 2010

objdump другой вариант:

objdump -a file.a|grep 'file format'
1 голос
/ 18 сентября 2010

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

извлекает объектные файлы из архива и проверяет их с помощью файла (1), нм (1) и т. Д.

0 голосов
/ 01 августа 2014

Я бы предложил использовать objdump вместо lipo. objdump предоставляет подробную информацию, чем lipo.

...