SDK系列-iOS FrameWork制作概述
SDK系列-FrameWork的制作(1)
SDK系列-FrameWork的制作(2)
在制作frameWork制作前期知识要点的准备和概述;
i386 x86_64区别
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架构的64位处理器
模拟器32位处理器测试需要i386架构,
模拟器64位处理器测试需要x86_64架构,
真机32位处理器需要armv7,或者armv7s架构,
真机64位处理器需要arm64架构。
2、-ObjC -all_load -force_load 区别
可阅读该作者文章:关于Xcode上的Other linker flags
-ObjC:加了这个参数后,链接器就会把静态库中所有的Objective-C类和分类都加载
到最后的可执行文件中
-all_load:会让链接器把所有找到的目标文件都加载到可执行文件中,但是千万不要
随便使用这个参数!假如你使用了不止一个静态库文件,然后又使用了这个参数,那么你
很有可能会遇到ld: duplicate symbol错误,因为不同的库文件里面可能会有相同的
目标文件,所以建议在遇到-ObjC失效的情况下使用-force_load参数。
-force_load:所做的事情跟-all_load其实是一样的,但是-force_load需要指定
要进行全部加载的库文件的路径,这样的话,你就只是完全加载了一个库文件,不影响其
余库文件的按需加载
查看.a .frameWork的结构
查看库包含的架构信息:
lipo -info xxxxx.a
合并多个架构:
../xxxx.a```
``` lipo -create ../xxxx.framework/xxxx ../xxxx.framework/xxxx -output ../xxxx```
拆分库:
```lipo 待拆分的fat库 -thin 需拆分框架 -output 新库```
编译的原理
参考资料:
[iOS开发~制作同时支持armv7,armv7s,arm64,i386,x86_64的静态库.a](http://blog.csdn.net/lizhongfu2013/article/details/42387311)
网友评论