LLD - 未知参数:-arch
LLD - unknown argument: -arch
尝试 link 在 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
开关,我看到这个 linker 命令(格式化):
"/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
有人知道这个平台的正确开关吗?
在联系 LLVM-dev 邮件列表后,看来 macOS 的 LLD(意思是,Mach-O 对象格式链接)开发已经过时了。
要在 macOS 上使用 Clang,最好坚持使用 OS-provided ld64
。
如果使用 LLVM-lld 的唯一原因是速度,那么试试 zld
与 Apple-ld 相比,它始终将时间缩短一半(通常不到一半)。
添加以下链接器标志:
-fuse-ld=`which zld` -Wl,-zld_original_ld_path,ld
尝试 link 在 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
开关,我看到这个 linker 命令(格式化):
"/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
有人知道这个平台的正确开关吗?
在联系 LLVM-dev 邮件列表后,看来 macOS 的 LLD(意思是,Mach-O 对象格式链接)开发已经过时了。
要在 macOS 上使用 Clang,最好坚持使用 OS-provided ld64
。
如果使用 LLVM-lld 的唯一原因是速度,那么试试 zld
与 Apple-ld 相比,它始终将时间缩短一半(通常不到一半)。
添加以下链接器标志:
-fuse-ld=`which zld` -Wl,-zld_original_ld_path,ld