c++ - 与 LLVM LLD 链接不起作用 [macos]

标签 c++ clang llvm lld

以下使用 clang 6.0 编译命令:

LDFLAGS="-L/usr/local/opt/myllvm6.0rc1/lib -fuse-ld=lld" 
CPPFLAGS="-I/usr/local/opt/myllvm6.0rc1/include -I/usr/local/opt/myllvm6.0rc1/include/c++/v1/"; 
clang++ -fsanitize=address $LDFLAGS $CPPFLAGS -g -v main.cpp
给出:
 "/usr/local/opt/myllvm6.0rc1/bin/ld64.lld" -demangle -lto_library /usr/local/opt/myllvm6.0rc1/lib/libLTO.dylib -no_deduplicate -dynamic -arch x86_64 -macosx_version_min 10.11.0 -o a.out -L/usr/local/opt/myllvm6.0rc1/lib /var/folders/14/rc46ppds1ms2kj_mvdcxlc040000gn/T/main-113675.o -lc++ /usr/local/opt/myllvm6.0rc1/lib/clang/6.0.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib -rpath @executable_path -rpath /usr/local/opt/myllvm6.0rc1/lib/clang/6.0.0/lib/darwin -lSystem /usr/local/opt/myllvm6.0rc1/lib/clang/6.0.0/lib/darwin/libclang_rt.osx.a
warning: ignoring unknown argument: -no_deduplicate
warning: -sdk_version is required when emitting min version load command.  Setting sdk version to match provided min version
Unable to find library for -lto_library
clang-6.0: error: linker command failed with exit code 1 (use -v to see invocation)
我不明白为什么它不能加载 /usr/local/opt/myllvm6.0rc1/lib/libLTO.dylib (它存在于这个位置!)
任何的想法?

最佳答案

您正在使用 -fuse-ld=lld 这是 LLD 文档所说的,正如您所看到的 ld64.lld 正在运行。但是,标志 -no_deduplicate 不是 lld 标志;它是一个 OSX ld 标志。 ld64.lld 手册页在这里:
https://manpages.ubuntu.com/manpages/disco/man1/ld.lld.1.html

关于c++ - 与 LLVM LLD 链接不起作用 [macos],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48968987/

相关文章:

c++ - 关于软件许可证

c++ - 在所有节点作为结构 C++ 的排序列表中进行二进制搜索

Clang OpenMP 版本,无法获取最新版本

c++ - Const 成员函数,当操作有明显的副作用时

c++ - 有没有实现排列操作的C++类?

ios - 找不到 Xcode Clang 错误文件

c++ - 使用 Clang AST 打印函数的参数

llvm - 在 llvm 中使用 errs() 打印固定小数

clang - 如何使用 LLVM 生成 SVE 向量

compilation - 在ubuntu12.04中编译LLVM的compiler-rt时出错