一、如果类库生成的构架和对应设备的构架不一致,会链接报错
如果项目中使用类库后,遇到形似Undefined symbols for architecture x86_64(x86_64架构下有未定义的符号)的错误,则为链接错误,该错误只有两种情况:
1> 项目中没有导入指定的类库
2> 项目中使用的类库架构(类库生成的设备)和运行项目的设备不同
二、CPU构架:
1、精简指令集构架:主要用于移动设备,手机/平板,代表厂商:ARM、IBM
2、复杂指令集构架:主要用于PC,代表厂商:Intel、AMD
三、iOS中涉及的架构:
1、真机:
armv7: iPhone4s
armv7s: iPhone5、iPhone5C
arm64/armv8: iPhone5s及以上
2、模拟器:
i386: iPhone4s、iPhone5、iPhone5C
x86_64: iPhone5s及以上
四、开发中,使用类库时:
1、标明不同设备类型使用不同的类库,自己选取
2、合成构架(即把5个.a文件合成一个.a,无需考虑设备类型问题,缺点:APP包会比较大)
五、怎么查看类库的构架呢?
使用命令行工具 lipo -info .a的文件路径
六、那怎么合成构架呢?
1、使用命令行工具 lipo -create 类库文件1路径 类库文件2路径 -output 生成的类库路径
示例:lipo -create XX/XX/XX.a KK/KK/KK.a -output ZZ/ZZ/ZZ.a
如果:ZZ/ZZ/ZZ.a 直接写ZZ.a,生成的类库在家目录下
2、对Xcode进行设置,自动生成合成构架的类库文件
但是:1、设置后,只能生成真机或模拟器的类库
2、生成真机的合成架构时,默认没有armv7s类型的 -> 修改设置来添加armv7s类库
3、再使用方式1对真机和模拟器的构架类库进行合成
4、比方式1的好处:方法1需要手动合成4次,方法2只需要手动合成1次
添加armv7s类库设置:
1、
2、