В этом конкретном случае я пытаюсь выяснить, совместим ли файл mylib.a с 32- или 64-битной версией. Я знаком с ldd для общих объектов (mylib.so), но как проверить обычный архив .a?
Как я могу узнать больше об архиве mylib.a в системе unix/linux?
Ответы (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
Objdump -G ‹file› дает немного более краткий список форматов.
- person Steve Baker; 09.10.2008
Только одна строка вывела меньше
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