Xcode 错误:为 iOS 模拟器构建,但链接到针对 iOS 构建的目标文件

3
直到购买Macbook Air M1时,我从未遇到过太多问题。就在昨天,我的应用程序在Xcode 12.4中编译时没有任何错误。但今天编译失败了:
/Users/userName/Projects/MyApp/ios/Pods/OpenSSL-Universal/ios/lib/libcrypto.a(cryptlib.o)正在为iOS模拟器构建,但连接对象文件是为iOS构建的,文件‘/Users/userName/Projects/MyApp/ios/Pods/OpenSSL-Universal/ios/lib/libcrypto.a’适用于arm64体系结构clang:链接器命令失败,退出码为1(使用-v查看调用)
请问如何解决这个问题?
1个回答

0

看起来在OpenSSL-Universal CocoaPods分发中缺少Arm64模拟器切片。

确保您使用的是最新版本,可以通过pod update进行更新,并联系OpenSSL-Universal以解决问题。


这个问题与缺少切片(slice)无关。我在另一个框架中遇到了相同的错误,该框架是一个包含所有架构的静态链接二进制文件(fat binary)。 - Shengchalover
旧式框架不适用于M1。需要xcframeworks,为arm64提供模拟器和设备切片。 - Paul Beusterien
似乎问题归结为链接器如何使用macho二进制文件中的标志区分模拟器和本机二进制文件。完全可以有包含有效架构和头文件以在所有环境中工作(包括arm64模拟器)的“旧式”fat-framework。但是要使其正常工作,供应商必须更新二进制文件,否则唯一的解决方案是调整二进制文件内部,如此精彩的文章所述:https://bogo.wtf/arm64-to-sim.html - Shengchalover
我改正我的说法,问题确实是由于缺少一个切片而引起的。 - Shengchalover

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接