mal*_*lat 11 debian linux-kernel
我盯着以下的输出:
% file -b /lib/x86_64-linux-gnu/*.so | grep ", for" | colrm 1 130 | sort -u
=5018237bbf012b4094027fd0b96fc22a24496ea4, for GNU/Linux 3.2.0, not stripped
9f21d, for GNU/Linux 3.2.0, stripped
bee51, for GNU/Linux 3.2.0, stripped
, for GNU/Linux 3.2.0, stripped
sha1]=2e5abcee94f3bcbed7bba094f341070a2585a2ba, for GNU/Linux 3.2.0, stripped
Run Code Online (Sandbox Code Playgroud)
GNU/Linux 3.2.0 有什么特别之处?这是在 Debian/bullseye 系统 (amd64) 上。
换句话说:GNU/Linux 3.2.0 中引入了哪些 API/功能(线程模型、安全功能...)如此重要?所需版本的显式设置将阻止用户使用某些LD_ASSUME_KERNEL值,因此我猜测有充分的理由拒绝旧值,例如LD_ASSUME_KERNEL=2.4.19(例如)。
Ste*_*itt 26
过去,GNU C 库定期更新其最低内核版本,这通常允许进行一些简化。C 库包含大量代码来处理内核版本之间的差异,例如,在可能的情况下优先使用新的系统调用。提高最低内核版本意味着可以删除处理旧版本的代码。
\n3.2.0 的唯一重要之处在于它\xe2\x80\x99 是 GNU C 库经历此过程的最后一个内核版本。它由 Joseph Myers于 2016 年 1 月发起,当时 2.6.32(之前的最小内核版本)已达到生命周期终点。3.2 是当时最古老的受支持内核。
\n碰撞本身是在两次提交中实现的,第一次是在 2016 年 2 月针对所有非 x86 架构,然后是在 2017 年 5 月针对 x86 架构。(延迟与 OpenVZ 支持问题有关。)还有许多其他后续补丁来删除不再需要的代码或简化代码,例如recvmmsg.
这并不意味着 GNU C 库不支持自 3.2.0 以来添加到 Linux 内核的功能;确实如此,以多种方式。某些功能作为改进而受到支持(例如 clone3),其他功能只是简单地提供(例如 close_range),其他功能则通过兼容性回退提供(即,如果系统调用不是\xe2\x80,则新系统调用完成的工作将由库完成\x99t 可用)。
您还可以使用配置选项构建符合给定内核版本要求的 C 库--enable-kernel。