IPHONE,zlib库编译iphone版本

来源:互联网 发布:手机版ps软件 编辑:程序博客网 时间:2024/05/19 16:29

连续写了几篇博客,说的都是痛一个问题,其实也没什么深奥的,就是编译器和连接器原理

道理我都懂,可真正做起来也不容易,就好像iphone的这些库编译,这2年来我真不懂,2年来一点也没学过

但只要能坚持下来,第731天,一切都会阔然开朗

博客的最后有下载链接,但能不直接下载就不直接下载,自己编译一下,收获大很多

(xxx要成大业,必先苦其心志,程序猿共勉之。。。。。)


虽然苹果10.8中的zlib版本为1.2.5,当前最新的zlib版本为1.2.7,另外一个就是苹果中的zlib不带minizip,而WINDOWS版本的zlb的库中带这个功能。如何编译一个最新的zlib版本同时加入需要的其它模块,这是本文研究的目的。

直接将zlib下载解压到苹果的一个目录下,在终端中执行./configure,是肯定不会成功的。

在网上找了一个编译库的脚本:http://code.google.com/p/ios-static-libraries/
经过查看,在build-all.sh中已经加入了对于IOS7和IOS7S的支持,而且这个工程最近还更新过,因此是值得使用的。并且可以看出,在模拟器上编译,生成的就是i386的代码,而在实体机上编译生成的应该是arm代码

需要的脚本就是build-all.sh和build-zlib.sh,当然使用时还需要修改一下。

1、注释掉build-all.sh中调用build-zlib.sh之前的调用其它脚本

2、注释掉build-zlib.sh解压和下载的语句,以及pushd和popd语句

3、在build-all.sh脚本中增加
export PATH="${PATH}:${DEVROOT}/usr/bin/"
这样make就可以用了
4、修改configure文件
原来在configure文件中
             AR="/usr/bin/libtool"
             ARFLAGS="-o" ;;
修改为
#             AR="/usr/bin/libtool"
#             ARFLAGS="-o" ;;
;;
解决libtool无法找到的问题,直接用ar

这样就可以了,在终端的zlib目录下执行./build-all.sh即可
最后生成的文件在iPhoneSimulator-6.0目录下
如果要加入minizip到库中,需要修改makefile.in文件,加入需要的obj模块
OBJMZ = contrib/minizip/zip.o contrib/minizip/unzip.o contrib/minizip/ioapi.o
OBJC = $(OBJZ) $(OBJG) $(OBJMZ)

但configure在生成makefile时会替换OBJC变量,因此还需要修改configure文件中OBJC变量默认值
OBJC='$(OBJZ) $(OBJG) $(OBJMZ)'

在测试工程中,删除对苹果zlib1.1.5.dylib的应用,加入编译后的zlib,然后删除工程中的minizip的相关文件,成功
这里提供测试工程:
下载: testzipframework_zlib1.2.7.rar
可参考本人博文:
在IOS上编程压缩解压缩zip格式的文件
http://xzhoumin.blog.163.com/blog/static/408811362013115529297/
并且提供修改后的文件:

下载: zlib修改文件及脚本.rar

供参考

0 0
原创粉丝点击