在Linux下,当我编译以下程序时:
int main() {}
使用gcc 4.7:
$ gcc test.c
并使用 readelf
检查生成的可执行文件:
$ readelf -h a.out
...
OS/ABI: UNIX - System V
...
它将ELF头中的 EI_OSABI
字节设置为 ELFOSABI_SYSV
,而不是 ELFOSABI_LINUX
.
有谁知道这背后的历史或推理?天真地,人们可能会期望它被设置为Linux .
此外,将其设置为Linux有什么后果?