
zlib(http://www.zlib.net/)是一套非常流行的且開源的壓縮、解壓縮庫,由Jean-loup Gailly與Mark Adler所開發(fā),初版0.9版在1995年5月1日發(fā)表。zlib使用DEFLATE演算法,最初是為libpng函式庫所寫的,后來普遍為許多軟體所使用。
zlib當前版本是 1.2.3,其移植性非常好,本人已經(jīng)在Windows、Linux、WinCE、Symbian等平臺成功地移植了zlib,當然也包括今天要移植的平臺:Android。
首先,從zlib 的官方網(wǎng)站下載zlib的源代碼:zlib123.zip,解壓后得到一個目錄zlib-1.2.3,zib已經(jīng)提供好了一個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可執(zhí)行文件: example 、minigzip 。
運行Android模擬器, 進入命令行,將兩個可執(zhí)行文件 push 至Android模擬器,再執(zhí)行,命令如下:
$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 命令查看當前目錄,會發(fā)現(xiàn)一個 foo.gz的文件,這個文件就是example生成的,退出adb shell,用命令: adb pull /dev/sample/foo.gz d:/foo.gz 可將模擬器上生成的文件 foo.gz pull至D盤根目錄,用winrar或7zip可查看這個文件的內(nèi)容,正是代碼中所寫的“hello, hello! ”!
至此,zlib移植Android平臺運行成功! |