
29 Sep
2024
29 Sep
'24
9:14 a.m.
LTO(Link-Time Optimization)全称链接时优化,是一项将编译优化延后到链接时进行编译技术。该技术由于拥有链接时的全程序视角,相比于传统编译流程中的单文件编译优化,往往可以提供更多的优化机会,做出更激进的优化决策,带来更强的性能与更小的二进制体积。
作为一个相对保守的前置方案,我们通过白名单机制在 openEuler 24.09
的版本构建中为 532 个应用使能了 LTO 。
这些应用满足以下条件:
1. 通过gcc构建;
2. 使能 LTO
后无编译问题;
3. 构建时会执行自带测试套(写在 spec
的 %check 段中)且无问题;
你可以在 /usr/lib/rpm/%{_vendor}/lto_white_list
路径下,或是 https://gitee.com/src-openeuler/openEuler-rpm-config/blob/openEuler-24.09/0001-Enable-LTO-By-Default.patch
补丁中找到白名单。
经统计,这 532 个应用的 ELF
可执行文件与动态库整体体积减少了约 300MB,占这 532
个应用的 ELF 可执行文件与动态库整体体积的约 14%
。
我们已经关注到LTO会与syscare热补丁机制产生冲突,目前已与syscare团队就解决方案达成一致,会在后续版本解决。我们会持续在社区讨论LTO使能及协同的可行性与风险,感谢大家。
openEuler Compiler SIG 王淳洋
149
Age (days ago)
149
Last active (days ago)
0 comments
1 participants
participants (1)
-
wangchunyang (F)