偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.
全部博文(1751)
分类: LINUX
2009-09-02 11:27:56
是一套非常流行的且开源的压缩、解压缩库,由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的源代码:,解压后得到一个目录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可执行文件:
运行Android模拟器, 进入命令行,将两个可执行文件 push 至Android模拟器,再执行,命令如下:
$adb push zlib version 1.2.3 = 0x1230, compile flags = 0x55 uncompress(): hello, hello! gzread(): hello, hello! gzgets() after gzseek: inflate(): hello, hello! large_inflate(): OK after inflateSync(): hello, hello! inflate with dictionary: hello, hello! #ls -l ls -l #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平台运行成功!