gcc - 确定编译的 ELF 对象是 32 位还是 64 位

标签 gcc 32bit-64bit gnu-toolchain

我想验证一个对象是否已编译为 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位模式?

最佳答案

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

关于gcc - 确定编译的 ELF 对象是 32 位还是 64 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29394943/

相关文章:

32bit-64bit - 32位机器可以访问多少内存?

c++ - 我一定是在构建 DLL 时做错了什么

debugging - 构建 Linux 内核镜像 (vmlinux) 以使用 DWARF3 而不是 DWARF4

c++ - 在代码中执行自定义规则 (C/C++)

c++ - 为什么 GCC 在我有至少一个参数时声称我违反了 "at least one argument for variadic macro"?

c++ - 执行用C++编写的.exe问题(使用mingw编译器)

c++ - 为什么 gdb 无法打印数组元素?

delphi - 如何使用 32 位和 64 位之间的安装程序默认值保持 Delphi App IDE 目标文件夹正常运行

c++ - 在 MSYS2 上安装和使用 arm-none-eabi-gcc

c++ 无法解释的类 “has not been declared” 由于命名空间导致的错误