zlib 程序库是著名的压缩引擎,zlib 也是著名的gzip (GNU zip) 所采用的压缩引擎。 如何安装zlib库? 一、 首先安装zlib,从其官方网站下载最新的源程序,网址:

zlib

程序库是著名的压缩引擎,zlib也是著名的gzip (GNU zip)所采用的压缩引擎。

如何安装zlib库?

一、 首先安装zlib,从其官方网站下载最新的源程序,网址:。

在然后将下载的文件解压释放到目录。解压后文件夹中自带了合适的makefile:

当使用make命令进行编译时,会要求先运行同一目录中的configure文件。

打开configure文件我们可以发现是Shell Script,所以运行sudo sh

configure来执行该脚本。

二、 然后,通过查看makefiles文件,我们通过make命令编译该程序库,编译成功后(用root权限),通过make install来安装该库,也就是将头文件和lib文件自动放置到/usr/include和/usr/lib中。

三、 安装完成后,就可以编写简单的压缩程序了,例如简单的示例如下:

#include

#include

#include

#include

#include

int main(int argc,char **argv[])

{

char msg[1000]="123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\n";

char buf[1000];

char result[1000];

unsigned long len, lenresult;

printf("msg size:%d\n", sizeof(msg));

len = 1000;

compress(buf, &len, msg, sizeof(msg) );

printf("buf size:%d\n", len);

lenresult=1000;

uncompress(result,&lenresult, buf, len );

printf("result size:%d\n", lenresult);

printf("result:%s\n", result);

return 0;

}运行后的结果为:

fddc3cd2d6ab873ee0f25da18c551bec.png

其中函数

1、int compress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);

compress函数将source缓冲区中的内容压缩到dest缓冲区。sourceLen表示source缓冲区的大小(以字节计)。注意函数的第二个参数destLen是传址调用。当调用函数时,destLen表示dest缓冲区的大小,destLen> (sourceLen

+ 12)*100.1%。当函数退出后,destLen表示压缩后缓冲区的实际大小。此时destLen/sourceLen正好是压缩率。

compress若成功,则返回 Z_OK;若没有足够内存,则返回Z_MEM_ERROR;若输出缓冲区不够大,则返回Z_BUF_ERROR。

2、int uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);

uncompress 函数将 source 缓冲区的内容解压缩到 dest 缓冲区。sourceLen 是 source 缓冲区的大小(以字节计)。注意函数的第二个参数 destLen 是传址调用。当调用函数时,destLen

表示 dest 缓冲区的大小, dest 缓冲区要足以容下解压后的数据。在进行解压缩时,需要提前知道被压缩的数据解压出来会有多大。这就要求在进行压缩之前,保存原始数据的大小(也就是解压后的数据的大小)。这不是 zlib 函数库的功能,需要我们做额外的工作。当函数退出后,destLen 是解压出来的数据的实际大小。

uncompress 若成功,则返回 Z_OK ;若没有足够内存,则返回 Z_MEM_ERROR;若输出缓冲区不够大,则返回Z_BUF_ERROR。若输入数据有误,则返回 Z_DATA_ERROR。

程序编译记得加上-lz ,制定库文件。

6e26acd6cfdaedbab199c64ec589ecf7.png

Logo

更多推荐