解决clang: error: linker command failed with exit code 1 (use -v to see invocation) 指令集问题

解决clang: error: linker command failed with exit code 1 (use -v to see invocation) 指令集问题,第1张

“OBJC_CLASS$_xx文件名”, referenced from: 
linker command failed with exit code 1 (use -v to see invocation)

解决指令集问题

程序编译后,要调用处理器能识别的指令来完成我们设定程序要做的任务。这些指令必须是处理器能够识别并能够执行的。这就引出了两个元素,处理器和处理器对应的指令集合。比如 ARM 处理器 ,指令集合比如 arm7 , arm7s, arm64等等。

我们看下苹果的不同机型(微观上对应的是处理器)对应的指令集

处理器指令集机型
64位处理器arm64e
iPhone 12 | iPhone 12 Mini | iPhone 12 Pro | iPhone 12 Pro Max
iPhone 11 | iPhone 11 Pro  | iPhone 11 Pro Max
iphone XS | iphone XS Max  | iphoneXR
64位处理器arm64
iPhone 8 | iPhone 8 Plus | and iPhone X
iPhone 7 | iPhone 7 Plus | iPad (2018)
iPhone 6S | iPhone 6S Plus 
iPhone 6 | iPhone 6 Plus
iPhone 5S
32位处理器

armv7s

iPhone5 | iPhone5C | iPad4(iPad with Retina Display)
32位处理器armv7
iPhone4 | iPhone4S | iPad | iPad2 | iPad3(The New iPad) | iPad mini | iPod Touch 3G | iPod Touch4

苹果模拟器对应的指令集

处理器指令集
32位处理器i386
64位处理器x86_64
Architectures:

Target的生成包能够支持的指令集。根据所支持的指令集,生成包中会包含对应的指令集的指令代码。所以说支持的指令集越多,生成的包就越大。

Valid Architectures 

限制Target生成包要支持的指令集。

结果

生成的包对指令集的支持情况是来自 Architectures  和 Valid Architectures  的交集部分。

在XCode12中, 对Architectures的支持选择上做了方案上的调整

Valid Architectures 被去掉了,使用了Excluded Architectures。

Excluded Architectures

要排除掉的指令集。

结果:

所以在XCode12中,生成的包对指令集的支持情况是来自 Architectures   减去 Excluded Architectures ,剩余的指令集。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/993700.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存