为什么系统二进制文件linux版本与系统发布版本不一致?

Why linux version of system binary file is not consistent with system release version?

当使用 file 命令检查二进制文件的 属性 时,我注意到输出是这样的:

$ file /bin/ls
ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=9567f9a28e66f4d7ec4baf31cfbf68d0410f0ae6, stripped

$ file /bin/pwd
pwd: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=fb34777a0e4532338c1f64bec0a8372ee619b9e7, stripped

$ uname -sr
Linux 4.19.9-arch1-1-ARCH

输出中有"for GNU/linux 3.2.0"。

我已经在 Ubuntu 18.04(内核版本 4.15)和 Arch linux(内核版本 4.19)上进行了测试,但是文件 属性 始终是 "linux 3.2.0"对于系统二进制文件。

我想知道这个标签是什么意思,为什么和系统内核版本不一致?

此标记显示 ELF 二进制文件是使用 glibc 编译的,该 glibc 生成需要此特定最低 linux 内核版本到 运行 的二进制文件。 版本号使用配置选项 --enable-kernel 在 glibc 的 compile time 中设置,并由链接器复制到二进制文件的 SHT_NOTE 部分(从那里由文件命令读取)。