为什么 readelf 将“System V”显示为我的操作系统而不是 Linux?

ale*_*der 10 linux elf

我用gcc编译了一个小C程序(2行代码),试图理解ELF文件格式。readelf -h在目标文件上做一个,我在标题中有:

OS/ABI:                            UNIX - System V 
Run Code Online (Sandbox Code Playgroud)

我正在使用 Fedora,那么为什么不是 Linux 呢?

编辑:我编译

int main(){
  int x = 0;
  x++;
}
Run Code Online (Sandbox Code Playgroud)

gcc -o main.o -c main.c. 我的 gcc 版本是

gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4) 
Run Code Online (Sandbox Code Playgroud)

Gil*_*il' 8

不同平台上的 ELF 可执行文件之间几乎没有区别。“UNIX - System V”是共同点;System VELF格式的来源。对应的数值为 0。该值表示可执行文件不使用任何特定于操作系统的扩展。Debian GNU/Linux 至少会配置 GCC/binutils 以生成默认情况下将此字段设置为 0 的可执行文件。

  • ELF 标准说 0 表示“ELFOSABI_NONE 0 没有扩展或未指定” http://www.sco.com/developers/gabi/2003-12-17/ch4.eheader.html (3认同)