一.是什么?
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是否勾選.