“OBJC_CLASS$_xx文件名”, referenced from:
linker command failed with exit code 1 (use -v to see invocation)
解决指令集问题
程序编译后,要调用处理器能识别的指令来完成我们设定程序要做的任务。这些指令必须是处理器能够识别并能够执行的。这就引出了两个元素,处理器和处理器对应的指令集合。比如 ARM 处理器 ,指令集合比如 arm7 , arm7s, arm64等等。
我们看下苹果的不同机型(微观上对应的是处理器)对应的指令集
处理器 | 指令集 | 机型 |
64位处理器 | arm64e | |
64位处理器 | arm64 | |
32位处理器 | armv7s | |
32位处理器 | armv7 | |
苹果模拟器对应的指令集
处理器 | 指令集 | |
32位处理器 | i386 | |
64位处理器 | x86_64 |
Target的生成包能够支持的指令集。根据所支持的指令集,生成包中会包含对应的指令集的指令代码。所以说支持的指令集越多,生成的包就越大。
Valid Architectures限制Target生成包要支持的指令集。
结果生成的包对指令集的支持情况是来自 Architectures 和 Valid Architectures 的交集部分。
在XCode12中, 对Architectures的支持选择上做了方案上的调整
Valid Architectures 被去掉了,使用了Excluded Architectures。
Excluded Architectures要排除掉的指令集。
结果:所以在XCode12中,生成的包对指令集的支持情况是来自 Architectures 减去 Excluded Architectures ,剩余的指令集。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)