Как я могу узнать больше об архиве mylib.a в системе unix/linux?

В этом конкретном случае я пытаюсь выяснить, совместим ли файл mylib.a с 32- или 64-битной версией. Я знаком с ldd для общих объектов (mylib.so), но как проверить обычный архив .a?


person Brett Hall    schedule 08.10.2008    source источник


Ответы (4)


«nm» и «ar» дадут вам некоторую информацию об архиве библиотеки.

person JayG    schedule 08.10.2008

$ objdump -G /usr/lib/libz.a
In archive /usr/lib/libz.a:

adler32.o:     file format elf32-i386

...

$ objdump -G /usr/lib64/libz.a
In archive /usr/lib64/libz.a:

adler32.o:     file format elf64-x86-64

...

$ objdump -G /ppc-image/usr/lib/libz.a
In archive /ppc-image/usr/lib/libz.a:

adler32.o:     file format elf32-powerpc

...

Требуется binutils с поддержкой нескольких библиотек, но это довольно просто, не так ли?

person ephemient    schedule 08.10.2008
comment
Objdump -G ‹file› дает немного более краткий список форматов. - person Steve Baker; 09.10.2008
comment
Только одна строка вывела меньше objdump -a... тем не менее, улучшение. Спасибо! - person ephemient; 09.10.2008

Стандартные утилиты «nm» и «ar» дадут вам информацию об архиве.

Чтобы узнать о 32/64-битных возможностях архива, используйте «ar» для извлечения файлов .o внутри mylib.a, затем запустите «file» для файлов .o, чтобы узнать их тип, включая использование 32/64 бит.

person Brett Hall    schedule 08.10.2008

В общем случае я просто использую утилиту «файл».

person wds    schedule 08.10.2008