文|御坂弟弟
根据邮件列表显示,Ubuntu 21.04 将为其软件包的构建启用 LTO 支持。
链接时间优化 LTO(Link time optimization)是一种链接时对整个程序多个编译单元优化的方法,其所生成的代码更快,文件更小。现在,像 GCC,Python 这样的上游项目已经默认打开 LTO 或提供 LTO 配置选项,其他 Linux 发行版也在发行时默认打开 LTO。此外,Linux Kernel 5.12 也或将支持 LTO 优化。
根据 wiki 显示,除了 riscv64 外(不想减慢其构建速度),Ubuntu 21.04 计划在将 glibc 2.33 添加到发行版后为所有的 64 位架构默认启用 LTO。目前,LTO 的编译器标志已经添加到 dpkg-buildflags 中,可以在软件包构建中被覆盖,将在 amd64,arm64,ppc64el 和 s390x 上启用。同时,Ubuntu 21.04 提供了 LTO 的开关:
export DEB_BUILD_MAINT_OPTIONS=optimize=+lto// 打开 LTO export DEB_BUILD_MAINT_OPTIONS=optimize=-lto// 关闭 LTO
另外,开发者已经对 LTO 支持分别用 GCC 9 和 GCC 10 进行了测试
GCC 9
https://people.canonical.com/~doko/ftbfs-report/test-rebuild-20190906-eoan.html
https://people.canonical.com/~doko/ftbfs-report/test-rebuild-20190906-lto-eoan.html
GCC 10
https://people.canonical.com/~doko/ftbfs-report/test-rebuild-20201216-hirsute-hirsute.html
https://people.canonical.com/~doko/ftbfs-report/test-rebuild-20201216-hirsute-lto-hirsute.html
领取专属 10元无门槛券
私享最新 技术干货