2012-02-13 15 views

Odpowiedz

11

W Unix (i podobnych - powiedzmy, Linux lub Minix) systemów, można użyć „plik” użytkowy:

%file /lib/libc.so.7 
libc.so.7: ELF 64-bit LSB shared object, x86-64, version 1 (FreeBSD), dynamically linked, stripped 

(% sygnalizuje polecenie powłoki i nie jest częścią polecenia)

Jeśli chodzi o system Windows, nie wiem, czy jest już wbudowane polecenie, ale jeśli nie, narzędzie można znaleźć na tej stronie: http://gnuwin32.sourceforge.net/packages.html (pakiet file zajmuje około 1/3 strony) .

EDIT: Dla bibliotek statycznych (.a plików), najpierw trzeba je rozpakować i sprawdzić .o plik:

%cp /usr/lib/libchipmunk.a . 
%ar -x libchipmunk.a 
%file *.o 
chipmunk.c.o: ELF 64-bit LSB relocatable, x86-64, version 1 (FreeBSD), not stripped 
<snip> 

UWAGA:ar -x ... zanieczyszczają lokalnego katalogu, więc należy skopiować pliki gdzie indziej (powiedzmy /tmp/something) najpierw!

Jestem pewien, że istnieje sposób bezpośredniego sprawdzenia tych plików, ale działa to równie dobrze!

+1

Polecenie file nie podaje tak dużo informacji dla statycznego biblioteka (pliki .a). –

+0

Droga przed wami :) –

0

file zawiera ogólne informacje o platformie na platformie Linux.

np.

file /usr/lib/libfoo.a 

lub do wykonywalnego pliku binarnego

file `which foo` 
0

Korzystanie file lub objdump. file zawsze działa, ale objdump zapewnia bardziej szczegółowe informacje o bibliotekach, archiwach i plikach wykonywalnych.

7

objdump jest twoim przyjacielem;)

$ objdump -f lib/lib.a 
+1

Dzięki :-D po prostu kopiowanie pliku, następnie archiwizowanie go i wreszcie użycie 'file'. – olibre

+0

objdump jest lepszy, ponieważ wynik pliku może być nieco ograniczony. – robert

Powiązane problemy