是否可以使用 gold linker 编译 & link Clang/LLVM?

Is it possible to compile & link Clang/LLVM using the gold linker?

我正在为 LLVM/Clang 编写自定义传递,重新编译往往需要一段时间并占用大量内存。我听说黄金链接器 (1) 比标准 ld 链接器花费更少的时间和 (2) 使用更少的内存。

有没有办法将标志传递到 LLVM/Clang 构建过程并更改为 gold 链接器?根据 this answer,我一直在尝试使用覆盖文件,但我似乎没有取得多大成功。

我还会注意到我正在使用 Clang 3.9 编译最新的 Clang/LLVM 版本 (4.0);我不介意在必要时切换回 GCC,但宁愿避免它。

Post-4.0(在提交 rL292047 之后),您应该将 LLVM_USE_LINKER 设置为 gold,如下所示:

cmake ... -DLLVM_USE_LINKER=gold ...

参考http://llvm.org/docs/CMake.html#llvm-specific-variables


虽然您仍然可以使用 gold,但这些天(2021 年 10 月)您可能应该使用 lld(如果它存在于您的主机工具链中)。如果您的主机工具链是来自 llvm.org 的 clang+llvm 发行版,它可能会。如果您的主机工具链来自 linux 发行版的包管理器,它可能会可用,但会作为单独的独立包安装。

cmake ... -DLLVM_ENABLE_LLD=ON ...