试图链接一个简单的程序使用LLVM 4.0.0发行版(Clang,LLD)上的MacOS塞拉利昂。注意,这在Linux中是完全可以实现的。
我的当前路径以LLVM的bin目录(即/opt/LLVM/4.0.0/bin:$PATH )作为前缀。
程序(main.cpp)是最简单的C++应用程序:
int main()
{
return 0;
}发出的shell命令是:clang -fuse-ld=lld。
这在以下错误中失败:
/opt/llvm/4/bin/ld.lld: error: unknown argument: -no_deduplicate
/opt/llvm/4/bin/ld.lld: error: unknown argument: -dynamic
/opt/llvm/4/bin/ld.lld: error: unknown argument: -arch
/opt/llvm/4/bin/ld.lld: error: unknown emulation: acosx_version_min
/opt/llvm/4/bin/ld.lld: error: unable to find library -lto_library
/opt/llvm/4/bin/ld.lld: error: /opt/llvm/4/lib/libLTO.dylib: invalid data encoding
clang-4.0: error: linker command failed with exit code 1 (use -v to see invocation)使用-v开关,我看到这个链接器命令(格式化):
"/opt/llvm/4/bin/ld.lld" \
-demangle \
-lto_library /opt/llvm/4/lib/libLTO.dylib \
-no_deduplicate \
-dynamic \
-arch x86_64 \
-macosx_version_min 10.12.0 \
-o a.out \
main.o \
-lSystem /opt/llvm/4/bin/../lib/clang/4.0.0/lib/darwin/libclang_rt.osx.a有人知道这个平台的合适开关吗?
发布于 2018-03-15 23:00:45
在与LLVM邮件列表联系后,macOS (意为Mach-O对象格式链接)的LLD开发似乎已经过时。
要在macOS上使用Clang,最好坚持使用操作系统提供的ld64。
发布于 2020-10-14 14:27:13
如果使用LLVM-lld的唯一原因是速度,那么请尝试zld。
与苹果公司(Apple)的做法相比,它一直将时间缩短到一半(通常不到一半)。
添加下列链接器标志:
-fuse-ld=`which zld` -Wl,-zld_original_ld_path,ld https://stackoverflow.com/questions/44106329
复制相似问题