2

我想验证一个对象是用 32 位还是 64 位编译的:

% readelf -h my_obj
ELF Header:
  Magic:   7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF32
  Data:                              2's complement, big endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  ...

既然显示的是ELF32,这是否保证对象是32位模式呢?

4

1 回答 1

2

胖二进制文件对于 ELF 来说并不常见或标准,因此该类确实可靠地指示 32 位与 64 位。但要弄清楚您是在查看 32 位 x86、ARM、MIPS 还是其他什么,您还必须检查 Type 字段正下方的 Machine 字段。

于 2015-04-01T16:14:46.893 回答