试图在Mac OS Sierra上使用LLVM 4.0.0版本(Clang、LLD)链接一个简单的程序。 注意,在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
有人知道这个平台的正确开关吗?
ld64
)。 - juniel_katarn