【问题标题】:Is the lld linker a drop-in replacement for ld and gold?lld 链接器是 ld 和 gold 的替代品吗?
【发布时间】:2015-06-04 09:19:53
【问题描述】:

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

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

【问题讨论】:

标签: linker lld


【解决方案1】:

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

  • “现在我很确定 [LLD] 将成为现有 GNU 链接器 [..] 的重要替代品(而且在我看来更好)。”
  • “LLD 现在能够链接大多数 x86-64 用户空间程序。”
  • “FreeBSD 项目和我们正在尝试使 LLD 成为操作系统的系统默认链接器,除了一些棘手的程序(例如内核或引导加载程序)之外,链接器大部分工作正常。” Already achieved!
  • “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 秒,8.5 秒 在 20 个核心上。 ld.gold 大约需要 25 秒和 20 秒, 分别。 [..] 如果您遇到链接时间过长的问题,我建议您尝试 LLD。”

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

【讨论】:

【解决方案2】:

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

这个设计目标声称on their website

LLD 是 GNU 链接器的直接替代品,它接受与 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?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-04
    • 2011-03-17
    • 2018-10-04
    • 2019-05-29
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    • 2014-08-14
    相关资源
    最近更新 更多