Architecture就是你当前工程所选的版本
Valid architectures则是可用的版本集合
比如说你的Architecture是armv7,而Valid architectures是armv7,armv6,
这样的话打出来的是支持的Armv7的,但是v6并没有支持
当然两个都可以相同的,可以多写
就比如这样
这些指令说的都是iPhone的CPU指令集,而这个对应关系是这样的
ARMv8/ARM64 = iPhone 5s, iPad Air, Retina iPad Mini
ARMv7s = iPhone 5, iPhone 5c, iPad 4
ARMv7 = iPhone 3GS, iPhone 4, iPhone 4S, iPod 3G/4G/5G, iPad, iPad 2, iPad 3, iPad Mini
ARMv6 = iPhone, iPhone 3G, iPod 1G/2G
所以就像前面说的
你的Valid Architectures设置的支持arm指令集版本有:armv7/armv7s/arm64,对应的Architectures设置的支持arm指令集版本有:armv7s,这时Xcode只会生成一个armv7s指令集的二进制包。
而这个有什么作用
大家应该碰到过这种情况
这都是因为设置的不正确造成的,所以可以试试修改这两个选项,或者换成对应支持的模拟器,就比如说他只支持到armv7,那么你就用iphone4的模拟器,而不要用iphone6的模拟器.
有时候还有那个i386,这个还是类似的,需要加上i386
ld: warning: ignoring file /Users/admin/Desktop/huframework.framework/huframework, missing required architecture i386 in file /Users/admin/Desktop/huframework.framework/huframework (3 slices)
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_mainViewController", referenced from:
objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
其他情况就具体情况再分析
版权属于:东哥笔记 - DongGe.org
本文链接:https://dongge.org/blog/67.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!