.a靜態庫構架合成,.a靜態構架
一、如果類庫產生的構架和對應裝置的構架不一致,會連結報錯
如果項目中使用類庫後,遇到形似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、