为什么 file 命令说 ELF 二进制文件适用于 Linux 2.6.9?

jon*_*scb 20 linux executable elf

每当我在 ELF 二进制文件上运行文件时,我都会得到以下输出:

[jonescb@localhost ~]$ file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for
GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, 
not stripped
Run Code Online (Sandbox Code Playgroud)

我只是想知道在 Linux 2.6.9 中有什么变化,这个二进制文件不能在 2.6.8 上运行?Linux 2.0 中没有添加 ELF 支持吗?

Mic*_*zek 25

glibc有一个名为的配置选项--enable-kernel,可让您指定支持的最低内核版本。当目标文件与该 glibc 构建链接时,链接器将 SHT_NOTE 部分添加到名为.note.ABI-tag包含该最低内核版本的生成可执行文件中。确切的格式在LSB 中定义,并且file知道查找该部分以及如何解释它。

您的特定 glibc 需要 2.6.9 的原因取决于构建它的人。在我的系统(Gentoo)上也是这样;glibc ebuild 中的注释说它指定 2.6.9 因为它是NPTL所需的最小值,所以这可能是一个常见的选择。另一个似乎出现的是 2.4.1,因为它是LinuxThreads的最低要求,在 NPTL 之前使用的包