lld链接器是ld和gold的直接替代品吗?

usr*_*567 12 linker lld

目前,LLVM项目中链接器lld开发时每周都会添加新功能.它的开发人员承诺lld比它快ld.与之相比,它如何竞争gold

lld是替代品ld吗?随着黄金有一些箍通过跳跃.

usr*_*567 7

其中一位LLD开发商Rui Ueyama回顾了LLD在2016年所取得的进展,请参阅http://lists.llvm.org/pipermail/llvm-dev/2016-December/107981.html.

  • "现在我非常确定那个[LLD]将成为现有GNU连接器[...]的替代品(在我看来更好)."
  • "LLD现在能够链接大多数x86-64用户程序."
  • "FreeBSD项目,我们正在努力使LLD成为操作系统的系统默认链接器,除了一些棘手的程序,如内核或引导加载程序,链接器工作得非常好." 已经实现了!
  • "LLD支持x86,x86-64,x32,AArch64,AMDGPU,ARM,PPC64和MIPS32/64,但完整性各不相同."
  • "[T]这里已经有一些系统使用LLD作为系统链接器,例如CloudABI或Fuchsia.Chromium和Clang/LLVM本身具有使用LLD构建它们的构建选项."

而且,作为奖励:

  • "LLD变得更快[...]在今年年初,LLD花费大约16秒来生成1.5 GB的clang(调试版本)可执行文件.现在,单核上需要大约14.5秒,20核上需要8.5秒. .gold分别大约需要25秒和20秒.[..]如果您有链接时间过长的问题,我建议您尝试使用LLD."

2017年春季更新根据其中一位开发人员的说法"LLD/ELF现已准备好至少生产x86-64(可能还有AArch64和MIPS).",请参阅http://lists.llvm.org/pipermail/llvm -dev/2017-March/111083.html 它还包含有关如何使用LLD的简要说明.

  • gcc v9.3.0+ 现在支持通过 -fuse-ld=lld 使用 lld。外部参考:https://github.com/gcc-mirror/gcc/commit/d69ac8b7f890f79560b11a3548fa39f3e7f8427e (4认同)

Cir*_*四事件 6

该程序本身声称具有兼容性目标,并且在简单测试中似乎运行良好

他们的网站上声称这一设计目标是:

LLD 是 GNU 链接器的直接替代品,它接受与 GNU 相同的命令行参数和链接器脚本。

例如在 Ubuntu 20.04 上我安装

sudo apt install lld
lld --version
Run Code Online (Sandbox Code Playgroud)

说:

LLD 10.0.0 (compatible with GNU linkers)
Run Code Online (Sandbox Code Playgroud)

我可以使用以下命令编译 C hello world -fuse-ld=lld

gcc -fuse-ld=lld -ggdb3 -O0 -std=c11 -Wall -Wextra -pedantic -o hello.out hello.c
Run Code Online (Sandbox Code Playgroud)

性能基准与黄金

我很快就会在以下位置记录结果:Replacing ld with gold - 有经验吗?