2009-12-18 67 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