一、什么是zlib?

zlib是提供数据压缩用的函式库,由Jean-loup Gailly与Mark Adler所开发,初版0.9版在1995年5月1日发表。zlib使用DEFLATE算法,最初是为libpng函式库所写的,后来普遍为许多软件所使用。此函式库为自由软件,使用zlib授权。截至2007年3月,zlib是包含在Coverity的美国国土安全部赞助者选择继续审查的开源项目。

安装步骤:

1、下载好压缩文件zlib-1.2.8.tar.gz

2、解压我们下载好的zlib-1.2.8.tar.gz压缩文件到你想安装的目录

命令 : mkdir -p /home/LLG/zlib (-p选项是创建多级目录)

进入目录:cd /home/LLG/zlib

把压缩包解压到我们的/home/LLG/zlib目录:

命令:tar -zxvf zlib-1.2.8.tar.gz

3、解压好了生成目录,我们进入zlib-1.2.8目录

命令:cd zlib-1.2.8

4、使用./configure --help可以查看编译选项,这里我们简单配置一下,以此执行下面命令!
①、./configure --prefix=/home/LLG/zlib (/home/LLG/zlib是我的安装目录,每个人的不一样!)
②、make 
③、make install 
5、下面配置系统文件,加载编译安装好的zlib生成的库文件
3

命令:sudo vim ./etc/ld.so.conf.d/zlib.conf (我这里不是管理员模式,所以用sudo暂时使用管理员给的相关权限修改配置文件)

在打开的文件中加入:

/home/LLG/zlib/lib (注意:/home/LLG/zlib我的安装目录,每个人的不一样,记住一定要是绝对路径)

保存退出!

6、加载配置好的文件

命令: sudo ldconfig

7、使用zlib库的时候记得加入 -lz 参数

例如: gcc example.c -lz

配置完成,下面用我们安装好的zlib库看一个小例子:

#include #include 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;
}  

这里我们用到了zlib库中的两个函数:
1、压缩函数:int compress(unsigned char * dest, unsigned long * destLen, unsigned char * source, unsigned long sourceLen);

dest:压缩后数据保存的目标缓冲区

destLen:目标缓冲区的大小(必须在调用前设置,并且它是一个指针)

source:要压缩的数据

sourceLen:要压缩的数据长度

compress()函数成功返回Z_OK,如果内存不够,返回Z_MEM_ERROR,如果目标缓冲区太小,返回Z_BUF_ERROR

2、解压缩函数: int uncompress(unsigned char * dest,  unsigned long * destLen, unsigned char * source, unsigned long sourceLen);

dest:解压后数据保存的目标缓冲区

destLen:目标缓冲区的大小(必须在调用前设置,并且它是一个指针)

source:要解压的数据

sourceLen:要解压的数据长度

uncompress()函数成功返回Z_OK,如果内存不够,返回Z_MEM_ERROR,如果目标缓冲区太小,返回Z_BUF_ERROR,如果要解压的数据损坏或不完整,返回Z_DATA_ERROR。

结果图:

可以看到这里只压缩了一个字节。

linux下简单配置zlib软件相关推荐

  1. Linux下安装配置各种软件和服务

    1. JDK 1.1. 解压Linux版本的JDK压缩包 yum -y install glibc.i686 #安装jdk源glibc(需要联网下载源) mkdir /usr/local/src/jd ...

  2. JDK+TOMCAT在LINUX下简单的配置

    今天写一个JDK+TOMCAT在LINUX下的配置 JDK是JAVA的类库.运行于JVM之上, 是整个Java的核心,包括了Java运行环境  TOMCAT是WEB服务软件,是为运行JSP提供一个平台 ...

  3. Linux下简单的邮件服务器搭建

    Linux下简单的邮件服务器搭建 电子邮件服务简介 电子邮件是因特网上最为流行的应用之一,而邮件服务器是一种用来负责电子邮件收发管理的设备,它构成了电子邮件系统的核心. 电子邮件系统的组成  MUA( ...

  4. linux服务配置大全 fedora 8 ftp 百度文库,Linux下VSFTP配置全攻略

    Linux下VSFTP配置全攻略 [日期:2007-10-05] 来源:Linux公社 作者:Linuxidc [字体:大 中 小] 4]如果要以系统中存在的普通用户登入FTP,也没有什么可以设置的, ...

  5. Linux 下不容错过的软件推荐

    我一直在安利我的朋友使用 Linux 系统.我知道这是一件不容易的事,毕竟使用 Linux 系统需要一定的学习成本,但我没有放弃,因为好用的东西要和大家分享,独乐了不如众乐乐! 今天我就分享一些 Li ...

  6. Linux 下安装配置C/C++开发环境 Code::Blocks

    Linux 下安装配置C开发环境Code::Blocks 一.提前的话 要说C语言和Linux的关系大家应该都不会陌生,Linux系统内核就是用C语言开发的,所以所有的Linux系统下面 都会有C的编 ...

  7. linux下安装配置redis服务

    2019独角兽企业重金招聘Python工程师标准>>> linux下安装配置redis服务 2016年03月25日 15:39:31 coding_everyday 阅读数:3530 ...

  8. (转)yi_meng linux 下 ifcfg-eth0 配置 以及ifconfig、ifup、ifdown区别

    linux 下 ifcfg-eth0 配置 以及ifconfig.ifup.ifdown区别 原文:https://www.cnblogs.com/yi-meng/p/3214471.html 这3个 ...

  9. 在Linux下开发多语言软件: Hello GetText!

    在Linux下开发多语言软件: Hello GetText! 转自:http://www.groad.net/bbs/read.php?tid-906.html 开发多语言软件是一件非常困难的事,各个 ...

最新文章

  1. java 汉字转拼音_推荐一款前端汉字转拼音组件工具
  2. 一些关于网页标题的动态js特效
  3. 如何用Java打出a加b_Java 实现 输入 AA 输出 AB ..输入 AZ 输出 BA 一直到输出 ZZ
  4. 【Elasticsearch】es 重启 已经 重启会导致什么问题
  5. volley 框架简易封装使用
  6. redist mysql_Windows下安装 MySQL
  7. 几何画板制作抛物线,就是这么简单
  8. 主板电源开关接口图解_【转】图解:各种主板接线方法 主板电线接法(电源开关、重启等)...
  9. CheckException和UnCheckException的区别
  10. 利用matlab求解常数e,利用matlab软件求解常数e和欧拉常数γ.docx
  11. 【Computer Organization笔记08】指令系统概述,指令格式,寻址方式
  12. Spring周期总结
  13. BUCT 程序设计基础第三篇20~30算法题答案(上)
  14. 春招笔记(十一)--设计模式
  15. A. Sequence with Digits
  16. 笔记本电脑开不了机?3种解决方法
  17. Linux ls命令返回结果说明
  18. MySQL快速插入亿级数据
  19. JavaScript-牛客网-剑指offer(1-10)题解
  20. 带你快速了解IOT网关

热门文章

  1. 口红?剃须刀?Python告诉你,刚过去的520,大家都在送什么礼物
  2. 常用超好用正则表达式!
  3. linux 磁盘管理3板斧,df、du、fdisk:Linux磁盘管理三板斧的使用心得
  4. 双曲图嵌入Low-Dimensional Hyperbolic Knowledge Graph Embeddings
  5. spring boot 虚拟路径url中文无法访问
  6. 计算机三级网络技术笔记(选择题)
  7. 装置案例| MODBUS转PROFINET网关连接智能低压电动机
  8. Yoga是联想PC+战略的延伸和拓展
  9. mysql 循环控制语句介绍
  10. 春暖花开index.php,【星月.大地】春暖花开时(散文)