3

在 Linux 下,当我编译以下程序时:

int main() {}

使用 gcc 4.7:

$ gcc test.c

并使用以下命令检查生成的可执行文件readelf

$ readelf -h a.out
...
OS/ABI: UNIX - System V
...

它将EI_OSABIELF 标头中的字节设置为ELFOSABI_SYSV,而不是ELFOSABI_LINUX

有谁知道这背后的历史或原因?天真地,人们可能期望它被设置为 Linux。

此外,将其设置为 Linux 会有什么后果?

4

0 回答 0