一.是什么?
CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型CPU的重要标示。
二.种类
ARM公司: arm架构
intel公司: intelx86系列架构
AMD公司: amdx86系列架构
电脑: 一般是x86 / x64
手机: 一般是arm (微处理器,功耗低,体积小)
32位: intel的x86系列 / ARM的armv7 armv7s系列
64位: intel的x64系列 / ARM的arm64系列
三.iOS手机支持类型
arm64:iPhone5S| iPad Air| iPad mini2(iPad mini with Retina Display)
armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display)
armv7:iPhone3GS|iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|iPad mini|iPod Touch 3G|iPod Touch4
armv6 设备: iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch(一般不需要去支持)
四.查看静态库/动态库的CPU指令集
进入动态库文件夹下.使用lipo -info命令
动态库和静态库都是一样的命令.
只是动态库是查看GXHome.framework文件夹下的GXHome可执行文件
静态库是查看GXHome.a文件
五.查看静态库/动态库的
查看该静态库/动态库的符号表 (所谓符号.即函数/全局变量.)
六.常识
X86-64简称x64. 都是64位的.
X86-32简称x86,是一个系列(如80186,80286,80386) .都是32位的.
- i386: 即intel80386.是intel公司的一款x86系列CPU.发布于1985年10月17日.将PC从16位时代带入了32位时代.
七.解决问题
问题一.undefined symbols for architecture x86_64
没有定义x86_64指令集下的GXPhoneTouchEventVCTest符号表.
这个时候就可以进行一下步骤去排查错误.
步骤1.使用lipo -info 命令去查看这个动态库/静态库是否包含了x86_64的指令集.
如果没有.就在Xcode -> Build Settings -> Architectures -> 里查看是否没加上x86_64这个指令集
步骤2.使用nm命令查看这个动态库/静态库里是否包含GXPhoneTouchEventVCTest这个符号
如果没有.就在工程里找到GXPhoneTouchEventVCTest这个类.
在Xcode的右边栏查看target membership是否勾选.