Debian
GNU/Linux 3.2.0 有什麼特別之處?
我盯著輸出:
% 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
GNU/Linux 3.2.0 有什麼特別之處?這是在 Debian/bullseye 系統 (amd64) 上。
換句話說:在 GNU/Linux 3.2.0(執行緒模型、安全功能……)中引入了哪些如此重要的 API/功能?所需版本的顯式設置將阻止使用者使用某些
LD_ASSUME_KERNEL
值,所以我猜有一個很好的理由拒絕舊值,例如LD_ASSUME_KERNEL=2.4.19
(例如)。
過去,GNU C 庫的最低核心版本會定期調整,這通常允許進行一些簡化。C 庫包含大量程式碼來處理核心版本之間的變化,例如在可能的情況下優先使用的新系統呼叫。提高最低核心版本意味著可以刪除處理舊版本的程式碼。
3.2.0 的意義僅在於它是 GNU C 庫經過此過程的最後一個核心版本。它由 Joseph Myers於 2016 年 1 月發起,當時 2.6.32(之前的最低核心版本)已達到生命週期的盡頭。3.2 是當時支持的最舊的核心。
凹凸本身是在兩次送出中實現的,首先是 2016 年 2 月的所有非 x86 架構,然後是 2017 年 5 月的 x86 架構。(延遲與 OpenVZ 支持問題有關。)還有許多其他後續更新檔可以刪除不再需要的程式碼或簡化程式碼,例如
recvmmsg
.這並不意味著 GNU C 庫不支持自 3.2.0 以來添加到 Linux 核心的特性;它確實,以各種方式。一些特性作為改進得到支持(例如
clone3
),其他的只是簡單地提供(例如close_range
),其他的通過兼容性回退提供(即,如果系統呼叫不可用,則由新系統呼叫完成的工作由庫完成) .
--enable-kernel
您還可以使用配置選項建構具有給定核心版本要求的 C 庫。