官方网址:http://www.zlib.net/
进入官网看到,如图所示,最新版本为zlib 1.2.11
然后你用wget http://www.zlib.net/zlib 1.2.11或者wget http://www.zlib.net/zlib-1.2.11下载,那你永远下载不了.
嘿嘿,正确的下载方式是wget http://www.zlib.net/zlib-1.2.11.tar.gz
进入目录可以看到
解压压缩包:
.tar.gz------------> tar zxvf 压缩包.tar.gz
.tar.bz2-----------> tar jxvf 压缩包.tar.bz2
解压压缩包 tar zxvf zlib-1.2.11.tar.gz 结果如下
在当前查看到
进入zlib-1.2.11目录
源码编译方式安装软件:
① ./configure //在解压软件目录内部执行
相关参数配置,软件安装位置,支持软件设置,软件依赖检查,生成编译对应的工具文件。
例如--prefix是设置软件的安装位置
② make //根据configure的配置信息生成“二进制文件”
③ make install //把生成的二进制文件复制到系统指定目录
安装完成!
一、Zlib的安装
Linux平台:
1、Zlib的下载
wget http://www.zlib.net/zlib-1.2.11.tar.gz
2、解压
tar zxvf zlib-1.2.11.tar.gz
3、编译(进入zlib-1.2.11目录)
cd zlib-1.2.11
./configure && make && make install
源码编译说明:
① ./configure //在解压软件目录内部执行
相关参数配置,软件安装位置,支持软件设置,软件依赖检查,生成编译对应的工具文件。
例如--prefix是设置软件的安装位置
② make //根据configure的配置信息生成“二进制文件”
③ make install //把生成的二进制文件复制到系统指定目录
Window平台:
1、编译
进入"/contrib/vstudio"子目录,找到对应版本的vs打开,然后编译
备注:
(1)如果编译过程中出现"fatal error LNK1281: 无法生成 SAFESEH 映像"的错误,则将该项目的 属性页->链接器->高级->映像具有安全异常处理程序->选“否”
2、使用
(1)需要包含的头文件是"zlib.h"和"zonf.h"
(2)在项目的 属性页->c/c++->预处理器->预处理器定义 里添加 ZLIB_WINAPI
二、Zlib的功能测试
写一个简单的例子测试一下,注意编译的时候要加入 -lz 这个库
zlib.c
gcc -o zlib zlib.c -lz
./zlib
#include <stdio.h>#include <zlib.h>int main(int argc,char **args){/*原始数据*/unsigned char strsrc[]="这些是测试数据。123456789 abcdefghigklmnopqrstuvwxyz\n\t\0abcdefghijklmnopqrstuvwxyz\n"; //包含\0字符unsigned char buf[1024]={0};unsigned char strdst[1024]={0};unsigned long srclen=sizeof(strsrc);unsigned long buflen=sizeof(buf);unsigned long dstlen=sizeof(strdst);int i;FILE * fp;printf("源串:");for(i=0;i<srclen;++i){printf("%c",strsrc[i]);}printf("原串长度为:%ld\n",srclen);printf("字符串预计算长度为:%ld\n",compressBound(srclen));//压缩compress(buf,&buflen,strsrc,srclen);printf("压缩后实际长度为:%ld\n",buflen);//解压缩uncompress(strdst,&dstlen,buf,buflen);printf("目的串:");for(i=0;i<dstlen;++i){printf("%c",strdst[i]);}return 0;}
编译及测试结果:
test.c
gcc -o test test.c -lz
./test
#include <stdio.h>
#include <zlib.h> int main()
{ /* 原始数据 */ unsigned char strSrc[] = "hello world! aaaaa bbbbb ccccc ddddd 中文测试 yes"; unsigned char buf[1024] = {0}; unsigned char strDst[1024] = {0}; unsigned long srcLen = sizeof(strSrc); unsigned long bufLen = sizeof(buf); unsigned long dstLen = sizeof(strDst); printf("Src string:%s\nLength:%ld\n", strSrc, srcLen); /* 压缩 */ compress(buf, &bufLen, strSrc, srcLen); printf("After Compressed Length:%ld\n", bufLen); /* 解压缩 */ uncompress(strDst, &dstLen, buf, bufLen); printf("After UnCompressed Length:%ld\n",dstLen); printf("UnCompressed String:%s\n",strDst); return 0;
}
参考:
1、Zlib库的安装与使用