ld:体系结构 arm64 的记录无效



我正在为tvOS构建一个框架并使用混淆软件。所有源代码都用-emit-llvm编译,混淆器处理LLVM IR代码,然后用clang++编译成.o,然后调用ld来生成最终的二进制文件,ld失败并显示此错误:

ld: Invalid record for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Program xcrun returned error code 1

可在使用 Xcode 11.2.1 和 11.3 的不同机器上重现。

如何排查此错误?我已将-v添加到链接器标志中,但它没有向输出添加任何提示。

就我而言,当应用程序链接到外部库时,我收到此错误,但仅在生成产品存档时。 我的解决方案是禁用Target位码Build Settings>Build Options. 我以前禁用了它,但我的 Xcode 最近更新了,并且该设置可能已被覆盖。

再次回答我自己的问题,以防其他人遇到这个问题。

就我而言,问题是由我链接到的库之一引起的,该库是为 tvOS 的 arm64e 构建的。这是一个带有arm64,arm64e和x86_64切片的胖二进制。出于某种原因,ld不喜欢它(即使我只为 arm64 构建框架(并抛出了这个错误。删除arm64e切片解决了这个问题。

另一个有趣的细节是调试版本与该库链接良好。

相关内容

  • 没有找到相关文章

最新更新