2

这可能是一个基本问题,但我想问,因为我不知道。

如果我有一个在 HP-UX 上创建的二进制文件,突然我在 linux 上使用这个二进制文件,或者假设在 AIX 或 sun solaris 等任何其他平台上,如果我想检查二进制文件的详细信息它是由哪个平台开发的,我怎么能在任何平台上做到这一点?或者是否有一种通用的方法可以在所有的 unix 风格上做到这一点?

4

2 回答 2

6

file命令为您提供有关任何文件的一些信息,而不仅仅是可执行文件。

在可执行文件上,它会给出如下结果:

MS Windows PE 32 位 Intel 80386 控制台可执行文件不可重定位

或者

ELF 32 位 MSB 可执行文件,SPARC,版本 1 (SYSV),静态链接,未剥离

于 2009-12-18T16:15:00.743 回答
0

根据其配置方式,binutils objdump可用于多种二进制格式。

$ objdump -f flex/bin/flashplayer

flex/bin/flashplayer:文件格式elf32-i386
架构:i386,标志 0x00000112:
EXEC_P、HAS_SYMS、D_PAGED
起始地址 0x0804fb20

$ objdump -f flex/bin/adl
在归档 flex/bin/adl 中:

flex/bin/adl:powerpc:common: 文件格式 mach-o-be
架构:powerpc:common,标志 0x00000012:
EXEC_P,HAS_SYMS
起始地址 0x00001c88


flex/bin/adl:i386: 文件格式 mach-o-i386
架构:i386,标志 0x00000012:
EXEC_P,HAS_SYMS
起始地址 0x00001e64

$ objdump -f flex/bin/adl.exe

flex/bin/adl.exe:文件格式pei-i386
架构:i386,标志 0x0000012f:
HAS_RELOC、EXEC_P、HAS_LINENO、HAS_DEBUG、HAS_LOCALS、D_PAGED
起始地址 0x004014c0

这是一个 Linux x86 ELF 二进制文件、一个胖 PPC 和 x86 Mach-O 二进制文件,以及一个 Windows 可执行文件,仅举一些例子。

于 2009-12-18T23:03:56.187 回答