.a静态库构架合成
一、如果類(lèi)庫(kù)生成的構(gòu)架和對(duì)應(yīng)設(shè)備的構(gòu)架不一致,會(huì)鏈接報(bào)錯(cuò)
如果項(xiàng)目中使用類(lèi)庫(kù)后,遇到形似Undefined symbols for architecture x86_64(x86_64架構(gòu)下有未定義的符號(hào))的錯(cuò)誤,則為鏈接錯(cuò)誤,該錯(cuò)誤只有兩種情況:
1> 項(xiàng)目中沒(méi)有導(dǎo)入指定的類(lèi)庫(kù)
2> 項(xiàng)目中使用的類(lèi)庫(kù)架構(gòu)(類(lèi)庫(kù)生成的設(shè)備)和運(yùn)行項(xiàng)目的設(shè)備不同
?
二、CPU構(gòu)架:
1、精簡(jiǎn)指令集構(gòu)架:主要用于移動(dòng)設(shè)備,手機(jī)/平板,代表廠商:ARM、IBM
2、復(fù)雜指令集構(gòu)架:主要用于PC,代表廠商:Intel、AMD
?
三、iOS中涉及的架構(gòu):
1、真機(jī):
armv7: ? ? ? ? ? ? ? iPhone4s
armv7s: ? ? ? ? ? ? iPhone5、iPhone5C
arm64/armv8: ? ?iPhone5s及以上
2、模擬器:
i386: ? ? ? ? ? ? ? ? ?iPhone4s、iPhone5、iPhone5C
x86_64: ? ? ? ? ? ??iPhone5s及以上
?
四、開(kāi)發(fā)中,使用類(lèi)庫(kù)時(shí):
1、標(biāo)明不同設(shè)備類(lèi)型使用不同的類(lèi)庫(kù),自己選取
2、合成構(gòu)架(即把5個(gè).a文件合成一個(gè).a,無(wú)需考慮設(shè)備類(lèi)型問(wèn)題,缺點(diǎn):APP包會(huì)比較大)
?
五、怎么查看類(lèi)庫(kù)的構(gòu)架呢?
使用命令行工具 lipo -info .a的文件路徑
?
六、那怎么合成構(gòu)架呢?
1、使用命令行工具 lipo -create 類(lèi)庫(kù)文件1路徑 ?類(lèi)庫(kù)文件2路徑 ?-output ?生成的類(lèi)庫(kù)路徑
示例:lipo -create ?XX/XX/XX.a ?KK/KK/KK.a ?-output ?ZZ/ZZ/ZZ.a
如果:ZZ/ZZ/ZZ.a ?直接寫(xiě)ZZ.a,生成的類(lèi)庫(kù)在家目錄下
2、對(duì)Xcode進(jìn)行設(shè)置,自動(dòng)生成合成構(gòu)架的類(lèi)庫(kù)文件
但是:1、設(shè)置后,只能生成真機(jī)或模擬器的類(lèi)庫(kù)
? ? ? ? 2、生成真機(jī)的合成架構(gòu)時(shí),默認(rèn)沒(méi)有armv7s類(lèi)型的 -> 修改設(shè)置來(lái)添加armv7s類(lèi)庫(kù)
?3、再使用方式1對(duì)真機(jī)和模擬器的構(gòu)架類(lèi)庫(kù)進(jìn)行合成
?4、比方式1的好處:方法1需要手動(dòng)合成4次,方法2只需要手動(dòng)合成1次
?
添加armv7s類(lèi)庫(kù)設(shè)置:
1、
2、
轉(zhuǎn)載于:https://www.cnblogs.com/panda1024/p/6115520.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
- 上一篇: 王者营地如何查看历史段位
- 下一篇: 往sde中导入要素类报错000732