为什么在这个elf文件中目标OS设置为HP-UX而不是Linux?

Sta*_*123 0 c linux elf

这个维基在此处输入图片说明

它指出偏移量 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...@.....
Run Code Online (Sandbox Code Playgroud)

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

Kam*_*Cuk 5

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

偏移量 7 处的字节是第 8 个字节0,即 ,即System V。将1针对e_ident[EI_VERSION]其设置为1的“设置为1 ELF的原件和当前版本”。

7f45 4c46 0201 0100 ...
                 ^^ - OSABI
               ^^ - VERSION
            ^^  DATA
          ^^ CLASS
^^^^^^^^^ - MAG{0..3}
Run Code Online (Sandbox Code Playgroud)

不应该是03吗?

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