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


18

每当我在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

我只是想知道Linux 2.6.9中有什么变化,使得该二进制文件无法在2.6.8上运行?Linux 2.0中是否未添加ELF支持?

Answers:


23

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

构建特定glibc要求2.6.9的原因取决于构建它的人。在我的系统上(Gentoo)相同;glibc ebuild中的注释说它指定了2.6.9,因为它是NPTL的最低要求,因此这很可能是一个常见的选择。另一个可能出现的版本是2.4.1,因为这是NPTL之前使用的LinuxThreads软件包的最低要求。


当增加最低要求的内核版本时,您是否获得了性能改进?这样做有什么好处?
亚伦弗兰克

此处(Fedora 31,x86_64)/lib/libc-2.30.so需要内核3.20(当前内核版本为5.3.12-300)
vonbrand
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.