linker - 使用Clang和CMake时使用LLVM链接器

标签 linker cmake clang

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

CXX=clang++ cmake <args>


默认链接器似乎保持不变,其余为usr/bin/ld(在Linux上)。

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

最佳答案

事实证明这与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

关于linker - 使用Clang和CMake时使用LLVM链接器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10286850/

相关文章:

c++ - undefined symbol 。 ld : symbol not found

找不到路径中的 CMake 编译器

c++ - 在 SFINAE 中将 int 缩小为 bool,gcc 和 clang 之间的输出不同

objective-c - 为什么 .c 文件可以包含 block ?

c++ - 动态调用成员方法c++

c++ - 为什么旧编译器构建的某些库可以链接到现代代码,而其他库则不能?

c++ - Unresolved external - 静态类中的枚举

c - 如何修复: Sql logic error sqlite3 in Clion?

xcode - 如何使用 CMake 在 "Other linker flags"中设置库?

ios - 如何在运行时访问类的源代码级定义?