程序编译一般需经预处理、编译、汇编和链接几个步骤。在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中。这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。
静态库和动态库是两种共享程序代码的方式,它们的区别是:静态库在程序的链接阶段被复制到了程序中,和程序运行的时候没有关系;动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用。使用动态库的优点是系统只需载入一次动态库,不同的程序可以得到内存中相同的动态库的复本,因此节省了很多内存。
原文:
http://blog.163.com/dang_wenyun/blog/static/42206525201161801232247/
概要
AppStore中的 iphone 程序不允许使用动态链接库。
如果需要在隐藏代码的前提下提供某些功能,可以使用静态链接库。
XCode项目中添加静态库的方法
右击target,选择add -> new target
在弹出的 NewTarget 界面中选择Cocoa Touch -> Static Library ,为新 library 取个名字。
将源文件添加到这个库。可以直接拖动现存源文件,也可以右击 -> add 。注意选择新建的库为添加的 target 。
设置原项目,令其使用新建的库。
右击原项目的 target ,选择 getInfo 。
选择 General 选项卡
向 linked libraries 中添加新创建的库 (即添加 .a 文件)。
编译新建的静态库以产生 .a 文件。(右击静态库的 target ,选择build)
编译原项目,若可以调用静态库中的方法则添加成功。
怎样隐藏静态库的代码
可以直接删除静态库中的源代码,只提交链接库文件(.a),这样原项目仍然可以编译执行。
备注:
Mac OS 下的静态链接库文件与linux 同样使用 .a 扩展名。
参考资料
Building static libraries with the iPhone SDK