Zlib的安装与测试

article/2025/10/9 13:08:43

 

官方网址: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库的安装与使用

 


http://chatgpt.dhexx.cn/article/qRgbTCNl.shtml

相关文章

Java多线程(详细了解java多线程机制)

每天进步一点点 一、程序、进程、线程1.1 什么是程序1.2 什么是进程1.3 什么是线程1.4 进程和线程的区别 二、创建线程的三种方式2.1 继承Thread类重写run()方法具体实现获取线程ID和名称修改线程名称 2.2 实现Runnable接口实现run()方法具体实现使用匿名内部类 2.3 实现Callab…

JAVA多线程和并发编程(三)- JAVA多线程信息共享

我们通常希望多个线程之间有信息的通信&#xff0c;而不是每个线程各自run方法执行完就结束了。那么多个线程间如何通信呢&#xff1f; Java中多线程通常通过共享变量进行信息共享。 1&#xff09;使用static变量共享信息&#xff0c;该方法适用于通过继承Thread类创建线程的方…

Java多线程的知识点

&#x1f331;&#x1f331;友友们大家好 我是你们的小王同学啊 今天给大家带来的是 java多线程的知识点 希望大家能支持小王 喜欢就给个三连吧 你们的三连是我制作的动力&#xff01;&#x1f497;&#x1f497; 小王的gitee&#xff1a;小王同学&#x1f370; 小王的github&a…

java线程调度

线程调度分为两种形式 1 分时调度模型: 所有线程轮流获得CPU使用权&#xff0c;平均分配每一个线程的CPU时间片 2 抢占式调度模型: 优先让优先级更高的线程使用CPU&#xff0c;如果线程优先级相同 那机会随机分配优先级 给优先级高的线程更多一些的时间片 而java的分配模式 是…

java多线程(详)

目录 一,什么叫线程&#xff1f; 那我们要先了解什么叫进程&#xff0c;线程依赖于进程而存在的。 二.多线程的创建 方式一&#xff1a;继承Thread类 方式二&#xff1a;实现Runnable接口 方式三&#xff1a;JDK 5.0新增&#xff1a;实现Callable接口 三种方式的比…

Java线程、Java多线程详细介绍

目录 一、进程和线程的区别 1.1 进程 1.2 线程 二、并发和并行 2.1 并行 2.2 并发 2.3 监控线程的执行情况 三、创建方式 3.1 继承Thread类 思考&#xff1a;为什么不直接通过对象调用start&#xff08;&#xff09;方法&#xff1f; 3.2 实现Runnable接口 …

【java】java多线程及线程池详解

目录 前言线程是什么&#xff1f;多线程是什么&#xff1f;多线程的作用和好处以及缺点守护线程和用户线程并发和并行的区别 一.线程的状态和常用方法1.线程各种状态转化图2.线程相关常用方法有① wait()② sleep(long timeout)③ join()④ yield()⑤ notify()和notifyAll() 3.…

Java线程池(超详细)

文章目录 1. 线程池概念2. JUC线程池架构3. Executors创建线程的4种方法4. 线程池的标准创建方式5. 向线程池提交任务的两种方式6. 线程池的任务调度流程7. ThreadFactory&#xff08;线程工厂&#xff09;8. 任务阻塞队列9. 调度器的钩子方法10. 线程池的拒绝策略11. 线程池的…

Java多线程超详解

引言 随着计算机的配置越来越高&#xff0c;我们需要将进程进一步优化&#xff0c;细分为线程&#xff0c;充分提高图形化界面的多线程的开发。这就要求对线程的掌握很彻底。 那么话不多说&#xff0c;今天本帅将记录自己线程的学习。 程序&#xff0c;进程&#xff0c;线程的…

java多线程(超详细)

1 - 线程 1.1 - 进程 进程就是正在运行中的程序&#xff08;进程是驻留在内存中的&#xff09; 是系统执行资源分配和调度的独立单位 每一进程都有属于自己的存储空间和系统资源 注意&#xff1a;进程A和进程B的内存独立不共享。 1.2 - 线程 线程就是进程中的单个顺序控制…

JAVA线程

一、线程相关概念 &#xff08;一&#xff09;程序、进程和线程的区别 程序 程序是含有指令和数据的文件&#xff0c;被存储在磁盘或其他的数据存储设备中&#xff0c;也就是说程序是静态的代码。 进程 进程是程序的一次执行过程&#xff0c;是系统运行的基本单位&#xf…

Java 线程 基础知识总结

线程基础 很不严谨的说&#xff0c;线程是什么&#xff1f;线程就是为了让很多个东西并发执行&#xff0c;大大的提高程序执行的效率啊 三个非常重要的概念&#xff1a; 程序&#xff1a;一组写好了的静态代码块&#xff08;就我们写的那些代码玩意&#xff09;进程&#xf…

Java多线程(超详解)

目录 1. 线程简介 1.1 程序 1.2 进程 1.3 线程 1.4 多线程 1.5 普通方法调用和多线程 2. 线程创建 2.1 继承Thread类 2.2 实现Runnable接口 2.3 实现Callable接口&#xff08;了解&#xff09; 2.4 网图下载 2.4.1 通过继承Thread类实现网图下载 2.4.2 通…

java 线程详解

一、线程的基本概念 一个程序最少需要一个进程&#xff0c;而一个进程最少需要一个线程。关系是线程–>进程–>程序的大致组成结构。所以线程是程序执行流的最小单位&#xff0c;而进程是系统进行资源分配和调度的一个独立单位。 一个线程就是在进程中的一个单一的顺序…

JAVA多线程详解(超详细)

目录 一、线程简介1、进程、线程2、并发、并行、串行3、进程的三态 二、线程实现1、继承Thread类2、实现Runnable接口3、实现Callable接口&#xff08;不常用&#xff09; 三、线程常用方法1、线程的状态2、线程常用方法 四、多线程1、守护&#xff08;Deamon&#xff09;线程2…

Java多线程(超详细!)

1、什么是进程&#xff1f;什么是线程&#xff1f; 进程是:一个应用程序&#xff08;1个进程是一个软件&#xff09;。 线程是&#xff1a;一个进程中的执行场景/执行单元。 注意&#xff1a;一个进程可以启动多个线程。 eg. 对于java程序来说&#xff0c;当在DOS命令窗口中…

count/count if函数的基本用法

count函数&#xff0c;用来计算单元格的数的个数&#xff0c;只是用来计数&#xff0c;并且只有只记录数子的个数&#xff0c;文本的个数是不被记录的。 但是很少会用到单纯的count函数&#xff0c;往往在工作中计数是带有条件的。就会用到countif函数 COUNTIF函数需要注意的点…

EXCEL COUNTIF()的一些奇特的用法

文章目录 前言一、统计第几次重复二、统计不重复的数量三、通配符模糊统计四、防止重复录入五、忽略错误值或空值统计六、重复值填充背景色总结 前言 日常工作中需要度娘很多知识点或者方法&#xff0c;但每次用了就忘&#xff0c;下次遇到就需要继续度娘&#xff0c;故在此记…

Excel多条件计数——COUNTIFS【获奖情况统计】

问题描述 当前&#xff0c;我们需要对表格中的获奖情况进行统计 奖励级别&#xff1a;院级、校级、国家级、国际级奖励内容&#xff1a;特等奖、一等奖、二等奖、三等奖、优胜奖 功能要求 对所有奖励级别进行统计根据级别&#xff0c;计算内容数量 当有人的选项内容如下时 …

如何在Microsoft Excel中使用COUNTIF函数

COUNTIF 是一个 Excel 函数,用于对满足单个条件的区域中的单元格进行计数。COUNTIF可用于计算包含日期、数字和文本的单元格。COUNTIF 中使用的条件支持逻辑运算符(>、<、<>、=)和通配符(*、?)进行部分匹配。 例如,我们想计算包含 Google或 Facebook 的单元…