SDK系列-iOS FrameWork制作概述

SDK系列-iOS FrameWork制作概述
SDK系列-FrameWork的制作(1)
SDK系列-FrameWork的制作(2)
在制作frameWork制作前期知識要點的準(zhǔn)備和概述;

i386 x86_64區(qū)別

1、armv7,armv7s,arm64,i386,x86_64概念

可閱讀該作者文章:armv7,armv7s,arm64,i386,x86_64都是什么

arm64:iPhone6s | iphone6s plus|iPhone6| iPhone6 plus|
        iPhone5S | iPad Air| iPad mini2(iPad mini with Retina Display)
armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display)
armv7: iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|
        iPad mini|iPod Touch 3G|iPod Touch4 

i386是針對intel通用微處理器32位處理器
x86_64是針對x86架構(gòu)的64位處理器

模擬器32位處理器測試需要i386架構(gòu),
模擬器64位處理器測試需要x86_64架構(gòu),
真機32位處理器需要armv7,或者armv7s架構(gòu),
真機64位處理器需要arm64架構(gòu)。

2、-ObjC -all_load -force_load 區(qū)別

可閱讀該作者文章:關(guān)于Xcode上的Other linker flags

-ObjC:加了這個參數(shù)后,鏈接器就會把靜態(tài)庫中所有的Objective-C類和分類都加載
到最后的可執(zhí)行文件中

-all_load:會讓鏈接器把所有找到的目標(biāo)文件都加載到可執(zhí)行文件中,但是千萬不要
隨便使用這個參數(shù)!假如你使用了不止一個靜態(tài)庫文件,然后又使用了這個參數(shù),那么你
很有可能會遇到ld: duplicate symbol錯誤,因為不同的庫文件里面可能會有相同的
目標(biāo)文件,所以建議在遇到-ObjC失效的情況下使用-force_load參數(shù)。
-force_load:所做的事情跟-all_load其實是一樣的,但是-force_load需要指定
要進行全部加載的庫文件的路徑,這樣的話,你就只是完全加載了一個庫文件,不影響其
余庫文件的按需加載

查看.a .frameWork的結(jié)構(gòu)

查看庫包含的架構(gòu)信息:
lipo -info xxxxx.a

合并多個架構(gòu):

../xxxx.a```
``` lipo -create ../xxxx.framework/xxxx ../xxxx.framework/xxxx -output ../xxxx```

拆分庫:
```lipo 待拆分的fat庫 -thin 需拆分框架 -output 新庫```

編譯的原理

參考資料:

[iOS開發(fā)~制作同時支持armv7,armv7s,arm64,i386,x86_64的靜態(tài)庫.a](http://blog.csdn.net/lizhongfu2013/article/details/42387311)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容