从去年开始,当使用 LLVM 的 Clang 编译器构建 Linux 内核时,已支持为内核构建启用链接时优化 (LTO, link-time optimizations)。而对于使用 GCC 构建 Linux 内核,仍缺少 LTO 支持,近日发布的一系列补丁是实现此目标的最新尝试。
Clang 的 LTO 支持在 Linux 5.16 中被合并,并一直保留至今。此举除了提升构建性能,对于内核来说,还提供了基于 Clang 的 CFI 支持。
早在十年前,在 Clang 能够构建 Linux 内核主线之前,已经有开发者为内核提交 GCC LTO 补丁,不过最终没有被合并,原因是当时 GCC 的 LTO 支持不够完善,未能说服 Linus。近年来,也有多家厂商发布了针对 Linux 内核的 LTO 补丁。随着现代 GCC 编译器(和 Clang)的发展,LTO 也逐渐变得更好,像 Fedora 在打包他们的发行版安装包时都会默认使用 LTO,也有像 Clear Linux 这样的公司通过使用 详情查看邮件列表。
(文/开源中国)