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

Is the lld linker a drop-in replacement for ld and gold?

linker from the LLVM project lld 目前正在开发中,每周都会添加新功能。它的开发者承诺 lldld 更快。与 gold 相比,它的竞争力如何?

lld 是 ld 的直接替代品吗?随着 gold there are some hoops to jump through.

LLD 开发者之一 Rui Ueyama 回顾了 LLD 在 2016 年取得的进展,参见 http://lists.llvm.org/pipermail/llvm-dev/2016-December/107981.html

  • "Now I'm pretty sure that that [LLD] is going to be a serious (and better, in my opinion) alternative to the existing GNU linkers [..]."
  • "LLD is now able to link most x86-64 userland programs."
  • "The FreeBSD project and we are trying to make LLD the system default linker of the operating system, and except a few tricky programs such as the kernel or a bootloader, the linker works mostly fine." Already achieved!
  • "LLD 支持 x86、x86-64、x32、AArch64、AMDGPU、ARM、PPC64 和 MIPS32/64, 尽管完整性各不相同。"
  • [T]这里已经有一些系统使用LLD作为系统 linker,例如 CloudABI 或 Fuchsia。 Chromium 和 Clang/LLVM 本身有 构建选项以使用 LLD 来构建它们。"

还有,作为奖励:

  • “LLD 变得更快 [..] 今年年初, LLD 花了大约 16 秒来产生 1.5 GB 的声音(调试版本) 可执行。现在,单核大约需要 14.5 秒,8.5 秒 在 20 个内核上。 ld.gold大约需要25秒和20秒, 分别。 [..]如果你遇到link时间过长的问题,我建议你试试LLD。"

更新 spring 2017 根据其中一位开发者的说法 "LLD/ELF is now ready for production use at least for x86-64 (and probably for AArch64 and MIPS).",参见 http://lists.llvm.org/pipermail/llvm-dev/2017-March/111083.html 它还包含有关如何使用 LLD 的简要说明。

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

此设计目标已声明 on their website:

LLD is a drop-in replacement for the GNU linkers that accepts the same command line arguments and linker scripts as GNU.

例如在 Ubuntu 20.04 I install:

sudo apt install lld
lld --version

说:

LLD 10.0.0 (compatible with GNU linkers)

并且我能够使用 -fuse-ld=lld:

编译一个 C hello world
gcc -fuse-ld=lld -ggdb3 -O0 -std=c11 -Wall -Wextra -pedantic -o hello.out hello.c

性能基准对比黄金

我将很快记录结果:Replacing ld with gold - any experience?