使用Clang& amp;时使用LLVM链接器CMake的

时间:2012-04-23 19:21:02

标签: linker cmake clang

告诉CMake使用LLVM链接器llvm-link而不是GNU ld作为链接器的最佳方法是什么?使用

配置项目时
CXX=clang++ cmake <args>

默认链接器似乎不受影响,保留usr/bin/ld(在Linux上)。

这可能没有using a separate toolchain file吗?

2 个答案:

答案 0 :(得分:11)

这与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

答案 1 :(得分:5)

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