Есть ли команда в Linux, чтобы узнать, была ли библиотека построена в 32 или 64-битном режиме - PullRequest
7 голосов
/ 08 января 2011
gcc 4.5.1
Fedora 14 Linux

У меня есть эта статическая библиотека, созданная предыдущим программистом.Однако он покинул компанию, а у нас нет исходного кода.Все, что у нас есть, это заголовочные файлы *.h и статическая библиотека libnet.a.

Когда я пытаюсь связать это с нашим приложением.Я получаю incompatible linker error.Я думаю, проблема в том, что статическая библиотека была построена на 32-битной машине.И я пытаюсь связать, используя 64-битную машину.Я мог бы скомпилировать свое приложение, используя cflag -m32.Тем не менее, я просто хочу знать, есть ли какая-нибудь команда, которая выдаст мне статическую библиотеку в 32- или 64-битном режиме?

Ответы [ 3 ]

8 голосов
/ 08 января 2011

Архив .a - это просто набор объектов, так почему бы и нет:

ar x libnet.a
file someobj.o

Это даст вам ответ вроде:

someobj.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
7 голосов
/ 08 января 2011

Просто запустить file поверх этого может быть достаточно?

0 голосов
/ 08 января 2011

открытие его в шестнадцатеричном редакторе с представлением ascii может выявить некоторые подсказки

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