这可能是一个基本的问题,但我要问,因为我不知道这件事。查询可执行
如果我有一个在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