From 6072de4a7e592008faf800dc83b05d346a298fef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=A8=E5=BE=97=E6=84=9F=E6=83=85=E7=9A=84openEuler?= =?UTF-8?q?=E6=9C=BA=E5=99=A8=E4=BA=BA?= Date: Tue, 4 Mar 2025 01:26:27 +0000 Subject: [PATCH] =?UTF-8?q?update=20oEEP/oEEP-0018=20openEuler=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E6=9E=84=E5=BB=BA=E5=8F=82=E6=95=B0=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E8=AE=B0=E5=BD=95.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...30\346\233\264\350\256\260\345\275\225.md" | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git "a/oEEP/oEEP-0018 openEuler\345\205\250\345\261\200\346\236\204\345\273\272\345\217\202\346\225\260\345\217\230\346\233\264\350\256\260\345\275\225.md" "b/oEEP/oEEP-0018 openEuler\345\205\250\345\261\200\346\236\204\345\273\272\345\217\202\346\225\260\345\217\230\346\233\264\350\256\260\345\275\225.md" index e9e79ab..4b19567 100644 --- "a/oEEP/oEEP-0018 openEuler\345\205\250\345\261\200\346\236\204\345\273\272\345\217\202\346\225\260\345\217\230\346\233\264\350\256\260\345\275\225.md" +++ "b/oEEP/oEEP-0018 openEuler\345\205\250\345\261\200\346\236\204\345\273\272\345\217\202\346\225\260\345\217\230\346\233\264\350\256\260\345\275\225.md" @@ -2,11 +2,11 @@ 标题: openEuler全局构建参数变更记录 类别: 信息整理 摘要: 全局构建参数变更记录 -作者: Funda Wang (fundawang at yeah.net) +作者: Funda Wang (fundawang at yeah.net), Shinwell Hu (shinwell_hu@openeuler.sh) 状态: 活跃 编号: oEEP-0018 创建日期: 2024-09-16 -修订日期: 2025-02-08 +修订日期: 2025-03-03 --- ## 背景说明 @@ -119,3 +119,23 @@ %define _fortify_level 1 # 可降级为1级防御,即在 CFLAGS 中生成 -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 %define _fortify_level 0 # 可禁用防御,即不在 CFLAGS 生成 -D_FORTIFY_SOURCE 的开关 ``` + +### 使用 mold 链接器来缩短链接时间 + +mold 是一个现代化的高性能 Unix 链接器,比 LLVM 的 lld 还要快数倍。 + +但由于mold连接器本身存在一定的功能欠缺(比如对kernel的不支持)我们决定只对一些编译时间较长的且 mold 支持的包使用 mold 链接,具体方案: + +** 开启方法 ** + +mold 启用当前为白名单管理,/usr/lib/rpm/pkg_enable_mold_whitelist 文件中包含所有默认配置使用 mold 链接的软件包名称。 + +** 禁用说明 ** +软件包在spec内可覆写_ld_use变量来切换链接器 + +%define _ld_use %{nil} 取消因为软件包在白名单中所添加的mold选项 +%define _ld_use -fuse-ld=xxx 切换不同的链接器,注意当软件包自身显式定义了-fuse-ld 时,最后一个-fuse-ld 设置的链接器生效。 + +** 参考链接 ** + +- https://github.com/rui314/mold -- Gitee