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