免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 911 | 回复: 0

Android原生(Native)C开发之五:zlib移植笔记 [复制链接]

论坛徽章:
0
发表于 2011-12-21 08:41 |显示全部楼层

Android原生(Native)C开发之五:zlib移植笔记


zlib(http://www.zlib.net/)是一套非常流行的且开源的压缩、解压缩库,由Jean-loup Gailly与Mark Adler所开发,初版0.9版在1995年5月1日发表。zlib使用DEFLATE演算法,最初是为libpng函式库所写的,后来普遍为许多软体所使用。

zlib当前版本是 1.2.3,其移植性非常好,本人已经在Windows、Linux、WinCE、Symbian等平台成功地移植了zlib,当然也包括今天要移植的平台:Android。

首先,从zlib 的官方网站下载zlib的源代码:zlib123.zip,解压后得到一个目录zlib-1.2.3,zib已经提供好了一个Makefile,改动几行(19、20、27、36、37)就可以动手编译了,改动如下:

......
CC = arm-none-linux-gnueabi-gcc


CFLAGS = -O2
......
LDFLAGS=libz.a -s -static
......
AR = arm-none-linux-gnueabi-ar rc
RANLIB = arm-none-linux-gnueabi-ranlib

......

进入zlib-1.2.3目录,在命令行输入:make 即可。

最后会生成两个可Android可执行文件: example 、minigzip 。

运行Android模拟器, 进入命令行,将两个可执行文件 push 至Android模拟器,再执行,命令如下:

 

$adb push example /dev/sample/example
$adb push minigzip /dev/sample/minigzip
$adb shell chmod 777 /dev/sample/*
$adb shell
#cd /dev/sample
#./example

zlib version 1.2.3 = 0x1230, compile flags = 0x55

uncompress(): hello, hello!

gzread(): hello, hello!

gzgets() after gzseek:  hello!

inflate(): hello, hello!

large_inflate(): OK

after inflateSync(): hello, hello!

inflate with dictionary: hello, hello!

#ls -l

ls -l
-rwxrwxrwx root     root       513228 2008-11-10 04:18 minigzip
-rwxrwxrwx root     root       517640 2008-11-10 04:18 example
-rwxrwxrwx root     root           31 2008-11-10 04:28 foo.gz

#exit

$adb pull /dev/sample/foo.gz d:/foo.gz

其中,“$”是Linux或Cygwin命令行的提示符,#是Android命令行的提示符。

最后,用 ls -l 命令查看当前目录,会发现一个 foo.gz的文件,这个文件就是example生成的,退出adb shell,用命令: adb pull /dev/sample/foo.gz d:/foo.gz 可将模拟器上生成的文件 foo.gz pull至D盘根目录,用winrar或7zip可查看这个文件的内容,正是代码中所写的“hello, hello! ”!

 

至此,zlib移植Android平台运行成功!

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP