首页 > 解决方案 > 为什么这个 elf 文件中的目标操作系统设置为 HP-UX 而不是 Linux?

问题描述

这个维基在此处输入图像描述

它指出偏移量 7 处的数字标识目标操作系统。

我已经为 linux 机器编译了 ac 程序并检查elf header了结果文件的(前 64 个字节):

> xxd -l 64 helloworld
00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000  .ELF............
00000010: 0300 3e00 0100 0000 8012 0000 0000 0000  ..>.............
00000020: 4000 0000 0000 0000 183f 0000 0000 0000  @........?......
00000030: 0000 0000 4000 3800 0d00 4000 1f00 1e00  ....@.8...@.....

为什么我要获得01第 7 个字节?不应该03吗?

标签: clinuxelf

解决方案


为什么我在第 7 个字节得到 01?

偏移量 7 处的字节是第 8 个字节,它是0,即System V1is for e_ident[EI_VERSION]which 设置为 1 表示“为 ELF 的原始版本和当前版本设置为 1” 。

7f45 4c46 0201 0100 ...
                 ^^ - OSABI
               ^^ - VERSION
            ^^  DATA
          ^^ CLASS
^^^^^^^^^ - MAG{0..3}

不应该是03吗?

正如您的链接所解释的,“无论目标平台如何,它通常都设置为 0”。


推荐阅读