官方网址: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;
}
参考: