Linker 在使用Clang&;时使用LLVM链接器;克马克
告诉CMake使用LLVM链接器Linker 在使用Clang&;时使用LLVM链接器;克马克,linker,cmake,clang,Linker,Cmake,Clang,告诉CMake使用LLVM链接器LLVM链接而不是GNUld作为链接器的最佳方式是什么?使用配置项目时 CXX=clang++ cmake <args> CXX=clang++cmake?这与cmake无关:clang++默认使用系统链接器。比如说, echo "#include <atomic>\n int main() { return 0; }" \ | clang++ -x c++ -std=c++11 -stdlib=libc++ - 这绕过了从3.
LLVM链接
而不是GNUld
作为链接器的最佳方式是什么?使用配置项目时
CXX=clang++ cmake <args>
CXX=clang++cmake?这与cmake无关:clang++
默认使用系统链接器。比如说,
echo "#include <atomic>\n int main() { return 0; }" \
| clang++ -x c++ -std=c++11 -stdlib=libc++ -
这绕过了从3.4开始的/usr/bin/ld,clang
在GCCInstallation.getParentLibPath()+“/”+GCCInstallation.getTriple().str()+“/bin”处查找链接器(ld
),然后在路径上查找ld
。您应该能够将链接器放入/usr/lib/gcc/-//ld
中,并通过clang
一步调用它。要手动指定此位置,请使用未记录的-B
标志。不幸的是,我不认为有任何方法可以更改搜索的链接器的名称,因此使用ld.gold或lld需要在上述位置使用符号链接。当您说“系统链接器”时,您是指它在$PATH
中首先找到的链接器吗,或者使用/usr/bin/
中的链接器是否已硬编码为clang?clang硬编码链接器搜索路径AFAIK,并尝试在$path
之外的其他位置拾取ld
二进制文件。我说“系统链接器”是指本机对象代码的标准链接器,而不是LLVM字节码链接器。@orian:查看此示例:似乎相关
echo "#include <atomic>\n int main() { return 0; }" \
| clang++ -x c++ -std=c++11 -stdlib=libc++ -S -emit-llvm -o - - \
| llvm-link -o binary -