首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未知参数:-arch

未知参数:-arch
EN

Stack Overflow用户
提问于 2017-05-22 06:51:40
回答 2查看 2.6K关注 0票数 11

试图链接一个简单的程序使用LLVM 4.0.0发行版(Clang,LLD)上的MacOS塞拉利昂。注意,这在Linux中是完全可以实现的。

我的当前路径以LLVM的bin目录(即/opt/LLVM/4.0.0/bin:$PATH )作为前缀。

程序(main.cpp)是最简单的C++应用程序:

代码语言:javascript
复制
int main()
{
    return 0;
}

发出的shell命令是:clang -fuse-ld=lld

这在以下错误中失败:

代码语言:javascript
复制
/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开关,我看到这个链接器命令(格式化):

代码语言:javascript
复制
"/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

有人知道这个平台的合适开关吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-15 23:00:45

在与LLVM邮件列表联系后,macOS (意为Mach-O对象格式链接)的LLD开发似乎已经过时。

要在macOS上使用Clang,最好坚持使用操作系统提供的ld64

票数 1
EN

Stack Overflow用户

发布于 2020-10-14 14:27:13

如果使用LLVM-lld的唯一原因是速度,那么请尝试zld。

与苹果公司(Apple)的做法相比,它一直将时间缩短到一半(通常不到一半)。

添加下列链接器标志:

代码语言:javascript
复制
-fuse-ld=`which zld` -Wl,-zld_original_ld_path,ld 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44106329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档