Как увидеть платформу компиляции статического файла библиотеки - PullRequest
11 голосов
/ 13 февраля 2012

У меня был статический файл библиотеки. Как узнать, скомпилирован ли он в i386 или на платформе arm. Спасибо.

Ответы [ 4 ]

14 голосов
/ 13 февраля 2012

В системах Unix (и аналогичных, скажем, Linux или Minix) вы можете использовать утилиту «file»:

%file /lib/libc.so.7
libc.so.7: ELF 64-bit LSB shared object, x86-64, version 1 (FreeBSD), dynamically linked, stripped

(% указывает на приглашение оболочки и не является частьюкоманда)

Что касается Windows, я не знаю, есть ли уже встроенная команда, но если нет, вы можете найти утилиту на этой странице: http://gnuwin32.sourceforge.net/packages.html (the *Пакет 1009 * занимает около 1/3 страницы).

РЕДАКТИРОВАТЬ: Для статических библиотек (.a файлы), вам сначала нужно извлечь их и проверить файл .o:

%cp /usr/lib/libchipmunk.a .
%ar -x libchipmunk.a
%file *.o
chipmunk.c.o: ELF 64-bit LSB relocatable, x86-64, version 1 (FreeBSD), not stripped
<snip>

ПРЕДУПРЕЖДЕНИЕ: ar -x ... будет загрязнять локальный каталог, поэтому обязательно сначала скопируйте файлы в другое место (скажем, /tmp/something)!

Я уверен, что есть способ напрямую проверить эти файлы, но это работает так же хорошо!

8 голосов
/ 13 февраля 2012

objdump твой друг;)

$ objdump -f lib/lib.a
0 голосов
/ 13 февраля 2012

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

0 голосов
/ 13 февраля 2012

file дает вам общую информацию о платформе в Linux.

, например

file /usr/lib/libfoo.a

или для исполняемого двоичного файла

file `which foo`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...