iOS 干货环境集成

undefined symbol for architectur

2016-11-03  本文已影响53人  艳晓

(2)**undefined symbol for architecture x86_64 **
翻译 :x86_64架构有以下这些没有定义的符号


E16FF80A-8BF8-440B-A90F-162EE119C4A8.png

**undefined symbol for architecture i386 **
Undefined symbols for architecture i386:
OBJC_CLASS$_XXX”, referenced from:
objc-class-ref in XXX
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
添加其他类库的时候也可能因为没有添加framework或者是它们依赖的库同样也会出现这样错误。
这样错误还是比较常见,一般原因就是少框架,少静态库!
步骤1:检查框架、静态库是否齐全

添加框架、静态库等
步骤2:检查编译源文件是否齐全
如果报的错误不是来自于第三方库,我们需要检查compile Sources中.m文件是否完全。 检查编译源文件是否齐全

步骤3:检查框架的配置:

检查Architectures配置是否符合该类库要求

ios的指令集有以下几种:

1,armv6,支撑的机械iPhone,iPhone2,iPhone3G及对应的iTouch

2,armv7,支撑的机械iPhone4,iPhone4S iPod 3G/4G,iPad 1G/2G/3G

3,armv7s,支撑的机械iPhone5,iPhone5C iPod5

4,arm64,支撑的机械:iPhone5S ,iPad Air开始的iPad等新设备

机械对指令集的支撑是向下兼容的,是以armv7的指令集是可以运行在iphone5S的,只是效力没那么高罢了~

Architecture : 指你想支撑的指令集。
Valid architectures : 指即将编译的指令集。
Build Active Architecture Only : 只是否只编译当前实用的指令集。

这个属性设置为Yes,是为了debug的时候编译速度更快,它只编译当前的architecture版本。 而设置为No时,会编译所有的版本。
如今是2014年初,其实4和4S的用户还是蛮多的,而iphone3之类的机械几乎没有了,所以我们的指令集最低必须基于armv7.

1,若是想本身的app在各个机械都可以或许最高效力的运行,则须要将Build Active Architecture Only改为NO,Valid architectures选择对应的指令集:armv7 armv7s arm64。这个会为各个指令集编译对应的代码,是以最后的 ipa体积根蒂根基翻了3倍。(若是不在乎app大小的话,应当如许做)

,若是想让app体积对峙最小,则现阶段应当选择Valid architectures为armv7,如许Build Active Architecture Only选YES或NO就无所谓了

上一篇 下一篇

猜你喜欢

热点阅读