2009-12-18 86 views
2

這可能是一個基本的問題,但我要問,因爲我不知道這件事。查詢可執行

如果我有一個在HP-UX上創建的二進制文件,並且突然將這個二進制文件放在Linux上,或者讓我們在任何其他平臺(如AIX或sun solaris)中進行說明,並且如果我想檢查有關二進制到它在哪個平臺上開發,我怎麼能在任何平臺上做到這一點?還是有一種通用的方式在unix的所有風格上做到這一點?

回答

6

file命令提供了有關的任何文件,不僅可執行文件的一些信息。

在可執行程序,它給出的結果如:

MS Windows PE的32位Intel 80386控制檯可執行不重定位

ELF 32位MSB可執行,SPARC,版本1(SYSV),靜態鏈接,未被刪除

0

取決於它的配置方式,binutilsobjdump可用於各種二進制格式。

 
$ objdump -f flex/bin/flashplayer 

flex/bin/flashplayer:  file format elf32-i386 
architecture: i386, flags 0x00000112: 
EXEC_P, HAS_SYMS, D_PAGED 
start address 0x0804fb20 

$ objdump -f flex/bin/adl 
In archive flex/bin/adl: 

flex/bin/adl:powerpc:common:  file format mach-o-be 
architecture: powerpc:common, flags 0x00000012: 
EXEC_P, HAS_SYMS 
start address 0x00001c88 


flex/bin/adl:i386:  file format mach-o-i386 
architecture: i386, flags 0x00000012: 
EXEC_P, HAS_SYMS 
start address 0x00001e64 

$ objdump -f flex/bin/adl.exe 

flex/bin/adl.exe:  file format pei-i386 
architecture: i386, flags 0x0000012f: 
HAS_RELOC, EXEC_P, HAS_LINENO, HAS_DEBUG, HAS_LOCALS, D_PAGED 
start address 0x004014c0 

這是一個Linux的x86 ELF二進制,脂肪PPC和x86的Mach-O二進制文件,以及一個Windows可執行文件,只給一些例子。

+0

但就是這個'objdump'存在於所有的UNIX版本? 就我而言,我無法在AIX中找到它。 – Vijay 2009-12-22 04:47:18

+0

我沒有說「的binutils objdump的」,即從GNU binutils的項目之一;它幾乎適用於所有平臺,儘管不是非自由系統上默認安裝的一部分。 – ephemient 2009-12-22 05:09:05