iOS CPU架構指令集

一.是什么?

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命令

image.png

動態庫和靜態庫都是一樣的命令.

只是動態庫是查看GXHome.framework文件夾下的GXHome可執行文件

靜態庫是查看GXHome.a文件

五.查看靜態庫/動態庫的

image.png

查看該靜態庫/動態庫的符號表 (所謂符號.即函數/全局變量.)

六.常識

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

image.png

沒有定義x86_64指令集下的GXPhoneTouchEventVCTest符號表.

這個時候就可以進行一下步驟去排查錯誤.

步驟1.使用lipo -info 命令去查看這個動態庫/靜態庫是否包含了x86_64的指令集.

如果沒有.就在Xcode -> Build Settings -> Architectures -> 里查看是否沒加上x86_64這個指令集

image.png
步驟2.使用nm命令查看這個動態庫/靜態庫里是否包含GXPhoneTouchEventVCTest這個符號

如果沒有.就在工程里找到GXPhoneTouchEventVCTest這個類.

在Xcode的右邊欄查看target membership是否勾選.

image.png
步驟3.查看在該類的.m里是否實現了這個類的@implementation.
步驟4.查看是否embedded和linked這個動態庫/靜態庫
image.png
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容