В системе Unix / Linux, как я могу узнать больше об архиве mylib.a? - PullRequest
3 голосов
/ 08 октября 2008

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

Ответы [ 4 ]

9 голосов
/ 08 октября 2008

"nm" и "ar" предоставят вам некоторую информацию об архиве библиотеки.

7 голосов
/ 09 октября 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 с поддержкой нескольких библиотек, но это довольно просто, не так ли?

4 голосов
/ 08 октября 2008

Стандартные утилиты "nm" и "ar" предоставят вам информацию об архиве.

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

0 голосов
/ 08 октября 2008

В общем случае я просто использую утилиту 'file'.

...