`

iphone项目中的静态库

    博客分类:
  • ios
阅读更多

程序编译一般需经预处理、编译、汇编和链接几个步骤。在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中。这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。


  静态库和动态库是两种共享程序代码的方式,它们的区别是:静态库在程序的链接阶段被复制到了程序中,和程序运行的时候没有关系;动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用。使用动态库的优点是系统只需载入一次动态库,不同的程序可以得到内存中相同的动态库的复本,因此节省了很多内存。



原文:

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 


 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics