2011-01-08 10 views
7
gcc 4.5.1 
Fedora 14 Linux 

Mam tę bibliotekę statyczną, która została zbudowana z poprzedniego programatora. Jednak opuścił firmę i nie mamy kodu źródłowego. Mamy tylko pliki nagłówkowe *.h i bibliotekę statyczną libnet.a.Czy jest w Linuksie polecenie, aby dowiedzieć się, czy biblioteka została zbudowana w trybie 32- lub 64-bitowym?

Kiedy próbuję i łączę to z naszą aplikacją. Otrzymuję incompatible linker error. Myślę, że problem polega na tym, że biblioteka statyczna została zbudowana na maszynie 32-bitowej. Próbuję połączyć za pomocą maszyny 64-bitowej. Mogłem skompilować moją aplikację za pomocą cflag -m32. Jednak po prostu chcę wiedzieć, czy istnieje jakieś polecenie, które da mi, jeśli biblioteka statyczna została zbudowana w trybie 32 lub 64 bitowym?

Wielkie dzięki za wszelkie sugestie,

+2

Czy próbowałeś polecenia 'file'? wcześniej działało dla mnie binarnie, więc może działać również na bibliotekach. –

+0

możliwy duplikat [W systemie Unix/Linux, w jaki sposób mogę dowiedzieć się więcej o archiwum mylib.a?] (Http://stackoverflow.com/questions/184502/on-a-unix-linux-system-how-can -i-learn-more-about-a-mylib-a-archive) – ephemient

Odpowiedz

8

Archiwum .a jest tylko zbiorem obiektów, więc czemu nie:

ar x libnet.a 
file someobj.o 

To daje taką odpowiedź :

someobj.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped 
+0

Dzięki, że działało świetnie – ant2009

0

otwarcie go w edytorze hex z widokiem ASCII może ujawnić pewne wskazówki

Powiązane problemy