网易博客旧文----编译用于IOS的zlib版本

编译用于IOS的zlib版本

2013-02-04 15:49:46| 分类: 苹果开发 | 标签: |举报 |字号大中小 订阅

虽然苹果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=" P A T H : {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

供参考

相关推荐
zhyongrui1 小时前
SnipTrip 菜单 Liquid Glass 实现方案:结构、材质、交互与深浅色策略
ios·性能优化·swiftui·交互·开源软件·材质
zhyongrui1 小时前
SnipTrip 不发烫的实现路径:局部刷新 + 合成缓存 + 峰值削减
ios·swiftui
晚霞的不甘2 小时前
Flutter for OpenHarmony 实现 iOS 风格科学计算器:从 UI 到表达式求值的完整解析
前端·flutter·ui·ios·前端框架·交互
初级代码游戏17 小时前
iOS开发 SwiftUI 14:ScrollView 滚动视图
ios·swiftui·swift
初级代码游戏20 小时前
iOS开发 SwitftUI 13:提示、弹窗、上下文菜单
ios·swiftui·swift·弹窗·消息框
zhyongrui1 天前
托盘删除手势与引导体验修复:滚动冲突、画布消失动画、气泡边框
ios·性能优化·swiftui·swift
Boxsc_midnight1 天前
【openclaw+imessage】【免费无限流量】集成方案,支持iphone手机+macos
ios·智能手机·iphone
感谢地心引力1 天前
安卓、苹果手机无线投屏到Windows
android·windows·ios·智能手机·安卓·苹果·投屏
2501_915918412 天前
HTTPS 代理失效,启用双向认证(mTLS)的 iOS 应用网络怎么抓包调试
android·网络·ios·小程序·https·uni-app·iphone
Swift社区2 天前
Flutter 路由系统,对比 RN / Web / iOS 有什么本质不同?
前端·flutter·ios