20

告诉 CMake 使用 LLVM 链接器llvm-link而不是 GNUld作为链接器的最佳方法是什么?配置项目时

CXX=clang++ cmake <args>

默认链接器似乎未触及,保留usr/bin/ld(在 Linux 上)。

这是否可能不使用单独的工具链文件

4

2 回答 2

13

事实证明这与 CMake 无关:clang++默认使用系统链接器。例如,

echo "#include <atomic>\n int main() { return 0; }" \
    | clang++ -x c++ -std=c++11 -stdlib=libc++ -

用于/usr/bin/ld链接应用程序。要将链接器更改为llvm-link,首先需要发出 LLVM 字节码,然后调用链接器,例如:

echo "#include <atomic>\n int main() { return 0; }" \
    | clang++ -x c++ -std=c++11 -stdlib=libc++ -S -emit-llvm -o - - \
    | llvm-link -o binary -

这绕过了/usr/bin/ld.

于 2012-04-26T02:03:49.563 回答
5

从 3.4 开始,在查找路径之前查找clang链接器 ( ld) 。您应该能够将链接器放入并在 1 步中调用它。要手动指定此位置,请使用未记录的标志。不幸的是,我不相信有一种方法可以更改所搜索的链接器的名称,因此使用 ld.gold 或 lld 将需要在上述位置使用符号链接。GCCInstallation.getParentLibPath() + "/../" + GCCInstallation.getTriple().str() + "/bin"ld/usr/lib/gcc/<arch><sub>-<vendor>-<sys>-<abi>/<version>/ldclang -B

于 2014-04-03T16:27:37.937 回答