Xcode 制作静态库详解
framework文件和.a文件都是库文件, 那什么是库文件? 库是程序代码的集合,是共享程序代码的一种方式. 根据源代码的公开情况,库可以分为开源库和闭源库(不公开源码,是经过编译完成的二进制编码,看不见其具体实现,主要以framework和.a文件存在),静态库(链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝 )动态库(链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存)
1.静态库工程的建立:
Xcode new新建一个工程,iOS下面的Framework&Library,目录下有一个选项是Cocoa Touch Static Library,选择它

2.添加库需要源代码

3.选中工程的target ->Build phases ,点击"+",选择New Hearders phases


4.将需要公布在外面的.h 文件添加到上面操作生成的phase中的public

5.选择真机设备进行生成.a文件,Command+B编译一下,然后选择模拟器重复编译操作,这个你能够看到Products文件下的.a文件变成黑色,选中黑色的.a文件,右击“Show in Finder”,查找制作好的.a文件;(Debug-iphoneos 文件夹里面的东西是用在真机上的,Debug-iphonesimulator 文件夹里面的东西是用在模拟器上的,如果 Scheme 是 Release 模式,生成的文件夹就以 Release 开头)

6.此时生成的.a文件不能同时运行在真机和模拟器上,此时我们需要在终端上执行命令行进行合并:lipo -create Debug-iphoneos/libAClone.a Debug-iphonesimulator/libAClone.a -output /Users/zhaochenglin/Desktop/1/LibCLNavigation.a
到这就大功告成了,
注意如果大家在使用的过程中遇到 “undefine symbols for architecture i386”这样的,大家只需要将设备选择 iPhone 5的模拟器编译,并将得到的.a文件,再次执行第6步 将和LibCLNavigation.a合并即可。另外我们可以通过lipo -info + xx.a查看其支持的运行编译环境。下面Xcode 是所有设备都支持的编译环境。
