检查linux是否安装zlib,Linux下安装zlib
zlib 程序库是著名的压缩引擎,zlib 也是著名的gzip (GNU zip) 所采用的压缩引擎。 如何安装zlib库? 一、 首先安装zlib,从其官方网站下载最新的源程序,网址:zlib程序库是著名的压缩引擎,zlib也是著名的gzip (GNU zip)所采用的压缩引擎。如何安装zlib库?一、 首先安装zlib,从其官方网站下载最新的源程序,网址:。在然后将下载的文件解压释放到目录。解
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;
}运行后的结果为:
其中函数
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 ,制定库文件。
,
更多推荐
所有评论(0)