SDK系列-iOS FrameWork制作概述

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)

你可能感兴趣的:(SDK系列-iOS FrameWork制作概述)