告诉CMake使用LLVM链接器llvm-link
而不是GNU ld
作为链接器的最佳方法是什么?使用 配置项目时
CXX=clang++ cmake <args>
默认链接器似乎保持不变,保持usr/bin/ld
(在 Linux 上)。
是否可以不使用单独的工具链文件?
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
.
从 3.4 开始,clang
在路径上查找ld
之前,会在GCCInstallation.getParentLibPath() + "/../" + GCCInstallation.getTriple().str() + "/bin"
处查找链接器 ( ld
)。 您应该能够将链接器放入/usr/lib/gcc/<arch><sub>-<vendor>-<sys>-<abi>/<version>/ld
,并通过 1 步由clang
调用它。 若要手动指定此位置,请使用未记录的 -B
标志。 不幸的是,我不相信有办法更改搜索的链接器的名称,因此使用 ld.gold 或 lld 将需要在上述位置使用符号链接。