这可能是一个基本问题,但我想问,因为我不知道。
如果我有一个在 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),静态链接,未剥离
根据其配置方式,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 可执行文件,仅举一些例子。