Cnbeta 06月01日 11:37
Linux 6.16 现在强制要求最低编译器版本为 GCC 8
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

Linux内核开发团队已将编译内核所需的最低GCC版本提升至8,并同时更新了GNU Binutils的基准版本至2.30。这一变更旨在简化代码库,移除针对旧版本编译器的兼容性处理。新版本的GCC 8允许删除部分旧的变通方法,从而精简内核代码。LLVM Clang 13及以上版本仍可作为GCC的替代方案。此举反映了对现代编译器特性的依赖,并带来了代码库的清理和优化。

⚙️Linux内核编译的最低编译器版本要求已更新:从GCC 5升级至GCC 8,同时GNU Binutils的基准版本也从v2.25升级到v2.30。

💡这一变更的主要驱动力是简化代码库,移除针对旧版本编译器的兼容性处理,从而可以删除一些旧的变通方法。

✅GCC 8的采用使得内核中能够移除超过600行代码,这主要得益于现代编译器对sancov和structleak等特性的支持,从而减少了对旧版本的依赖。

💻LLVM Clang 13及更新版本仍然是编译Linux内核的GCC替代方案,为开发者提供了选择的灵活性。

Linux x86/x86_64 内核的编译要求最低编译器版本为 GCC 8,而 Linux 6.16 也对所有其他架构都提出了同样的要求。所有 Linux 内核架构的 GCC 8 和 GNU Binutils 2.30 基准现在允许从代码库中删除一些旧的变通方法。

Linus Torvalds 今天合并了这一变更,强制要求编译 Linux 内核所需的 GNU 编译器集合版本至少使用 GCC 8。GCC 8 最低版本取代了之前的 GCC 5 最低版本要求。GNU Binutils 基准版本从 v2.25 升级到 v2.30。LLVM Clang 13 及更新版本仍然是编译 Linux 内核的 GCC 替代方案。

Arnd Bergmann 在Git 合并 中阐述了提高 GCC 基准的理由:

需要 gcc-8 和 binutils-2.30

x86 已使用 gcc-8 作为最低版本,这将使所有其他体系结构更改为同一版本。Debian 10 和 Red Hat Enterprise Linux 8 使用 gcc-8,这两个系统仍然受支持,binutils 2.30 是它们对应的最旧版本。Ubuntu Pro 18.04 和 SUSE Linux Enterprise Server 15 都使用 gcc-7 作为系统编译器,但还包含仍然受支持的工具链。

使用新的最低工具链版本,可以放弃许多针对旧版本的解决方法,尤其是在 x86_64 和 arm64 上。重要的是,更新的编译器版本允许删除剩余的五个 gcc 插件中的两个,因为现代编译器版本已经包含对 sancov 和 structleak 特性的支持。

我尝试收集基于新工具链版本可能出现的已知更改,但预计还会进行更多清理。

与此变化合并后,内核中已经删除了 600 多行代码,从而能够消除 GCC8 之前的旧解决方法。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Linux内核 GCC 8 编译 GNU Binutils
相关文章