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