這可能是一個基本的問題,但我要問,因爲我不知道這件事。查詢可執行
如果我有一個在HP-UX上創建的二進制文件,並且突然將這個二進制文件放在Linux上,或者讓我們在任何其他平臺(如AIX或sun solaris)中進行說明,並且如果我想檢查有關二進制到它在哪個平臺上開發,我怎麼能在任何平臺上做到這一點?還是有一種通用的方式在unix的所有風格上做到這一點?
這可能是一個基本的問題,但我要問,因爲我不知道這件事。查詢可執行
如果我有一個在HP-UX上創建的二進制文件,並且突然將這個二進制文件放在Linux上,或者讓我們在任何其他平臺(如AIX或sun solaris)中進行說明,並且如果我想檢查有關二進制到它在哪個平臺上開發,我怎麼能在任何平臺上做到這一點?還是有一種通用的方式在unix的所有風格上做到這一點?
的file
命令提供了有關的任何文件,不僅可執行文件的一些信息。
在可執行程序,它給出的結果如:
MS Windows PE的32位Intel 80386控制檯可執行不重定位
或
ELF 32位MSB可執行,SPARC,版本1(SYSV),靜態鏈接,未被刪除
取決於它的配置方式,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可執行文件,只給一些例子。
但就是這個'objdump'存在於所有的UNIX版本? 就我而言,我無法在AIX中找到它。 – Vijay 2009-12-22 04:47:18
我沒有說「的binutils objdump的」,即從GNU binutils的項目之一;它幾乎適用於所有平臺,儘管不是非自由系統上默認安裝的一部分。 – ephemient 2009-12-22 05:09:05