首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux 5.12合并Clang LTO支持

文|御坂弟弟

近日,Linux 5.12 终于合并了 Clang LTO 支持,而且支持 AArch64 (64 位 ARM) 平台和 x86_64 平台。

此前本站曾报道过 Linux 5.12 或将支持 Clang LTO 和 Linux 5.12 的 Clang LTO PR 的相关讯息。不过,当时的补丁仅支持 AArch64 平台,并且表示由于一些 objtool 的问题,对于 x86_64 平台的支持或许要在 Linux 5.13 才能实现。而且,Linus Torvalds 过去从未采纳过 LTO 支持的相关提议(包括 GCC),对于这次提交是否同意也尚不清晰。

实际上,使用 Clang LTO 可以得到最佳的运行时性能,并且,Clang 的 CFI(Control-Flow Integrity)实现也借此能得以实施。在这些更改中, 同时也包括 ThinLTO 支持 —— 仅仅进行有限的函数 importing 分析,与传统的构建方式占用内存和时间差不多。像谷歌这样的公司早已在其移动设备上的内核构建中使用 Clang LTO 并取得了不错的效果:大约 3 年前开始, Android 内核不仅由 Clang 构建,而且还利用了链接时优化。微软也探索过使用 LTO + PGO 来给 Linux 内核提升性能。除了性能之外,Clang LTO 还允许启用 CFI 以获得更高的安全性。

令人兴奋的是,Linus Torvalds 终于合并了 Clang LTO 支持。而且这次的补丁不仅包括之前的 AArch64 平台支持,它还有第二部分:支持 x86_64 平台。在 Linux 5.12 中,用户使用脚本即可启用 Linux 内核 Clang LTO 构建:

make LLVM=1 LLVM_IAS=1 defconfig

scripts/config -e LTO_CLANG_THIN

make LLVM=1 LLVM_IAS=1

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210225A0AQ8300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券