【开源库 | minizip】Linux(Ubuntu18.04)下,minizip的编译、交叉编译

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭
⏰发布时间⏰: 2024-12-20 00:13:22

本文未经允许,不得转发!!!

目录

  • 🎄一、minizip 介绍
  • 🎄二、minizip 源码下载
  • 🎄三、minizip 的编译
    • ✨3.1 编译前准备
    • ✨3.2 编译minizip
  • 🎄四、minizip 的交叉编译
  • 🎄五、总结


在这里插入图片描述

在这里插入图片描述

🎄一、minizip 介绍

minizip最初是由吉勒·沃兰特(Gilles Vollant)1998年开发的。从zlib 1.1.2开始,它作为一个额外的代码贡献首次包含在zlib发行版中。从那时起,它一直在不断改进,并得到了许多人的贡献。原文项目仍然可以在由Mark Adler维护的zlib发行版中找到。

minizip 是一个基于 zlib 库开发的用于文件压缩和解压缩的开源库。它提供了一系列功能强大且易于使用的接口,能够处理常见的压缩文件格式,如 ZIP。minizip 在跨平台性方面表现出色,支持多种操作系统,包括 Windows、Linux、Mac OS 等,这使得它在众多不同环境的软件开发项目中得到广泛应用。无论是在小型的桌面应用程序中,还是大型的服务器端软件中,只要涉及到文件压缩和解压缩操作,minizip 都可能是一个合适的选择。

minizip 的官网地址:http://www.winimage.com/zLibDll/minizip.html

本文使用的编译环境:

  • 编译系统:Ubuntu 18.04.6 LTS
  • 编译器:gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
    在这里插入图片描述
  • 交叉编译工具:aarch64-mix210-linux-gcc(海思SS528平台)
    在这里插入图片描述

在这里插入图片描述

🎄二、minizip 源码下载

minizip现在有两个版本:

  • 一个是跟随着zlib库一起发布的,存放在zlib库的zlib-1.3.1/contrib/minizip/ ,现在zlib的最新版本是1.3.1版本 ,可以从这个地址下载到其发布版:https://github.com/madler/zlib/tags
    minizip的在zlib库的源码地址:https://github.com/madler/zlib/tree/master/contrib/minizip
  • 另一个版本的地址是:https://github.com/zlib-ng/minizip-ng。这个库背后的动机是需要新的特性和对原始库的错误修复,而原始库已经很长时间没有维护了。为了帮助提高可维护性和可读性,代码在很大程度上进行了重构和重写。已经为原始minizip库的消费者提供了兼容层。

这两个库的区别:zlib中的minizip代码是minizip的原始库,比较长的时间没更新了。而minizip-ng是对原始代码进行了重构和重写的,可以更好地阅读,也有更好地兼容性。

使用哪个,读者自己斟酌,本文是使用 zlib 中的 minizip ,这个对于我的情况来说已然够用,以后不兼容再看minizip-ng

代码如下:
在这里插入图片描述


在这里插入图片描述

🎄三、minizip 的编译

这个小节介绍的是使用 Ubuntu 自带的 gcc 编译器编译过程。

✨3.1 编译前准备

minizip 是依赖 zlib 库的,所以需要先编译 zlib ,关于zlib的编译和交叉编译,可以参考这篇文章:https://blog.csdn.net/wkd_007/article/details/140573322。

完成zlib编译后,其编译结果如下:
在这里插入图片描述


✨3.2 编译minizip

  • ①复制一份 minizip 源码到 zlib 编译结果同级目录,cp zlib-1.3.1/contrib/minizip/ ./ -far在这里插入图片描述
  • ②进入minizip目录
    cd minizip
    
  • ③修改 Makefile 如下:
    ZLIB_PATH := ../result_gcc
    CC?=cc
    AR?=arCFLAGS := $(CFLAGS) -O -I $(ZLIB_PATH)/include -shared -fPICMINIZIP_SO_OBJS = unzip.o zip.o ioapi.o $(ZLIB_PATH)/lib/libz.so
    MINIZIP_A_OBJS = unzip.o zip.o ioapi.o $(ZLIB_PATH)/lib/libz.a.c.o:$(CC) -c $(CFLAGS) $*.call: libminizip.a libminizip.solibminizip.so:  $(MINIZIP_SO_OBJS)$(CC) $(CFLAGS) -o $@ $(MINIZIP_SO_OBJS)libminizip.a:	$(MINIZIP_A_OBJS)$(AR) rcs $@ $(MINIZIP_A_OBJS)clean:rm -f *.o *.a *.so
    
  • ④执行 make
    make
    
    在这里插入图片描述

编译后 minizip 目录下会出现 libminizip.a、libminizip.so ,编译完成。


在这里插入图片描述

🎄四、minizip 的交叉编译

交叉编译的步骤跟上个小节一样。本文使用的是 aarch64-mix210-linux-gcc,读者根据需求替换成自己的交叉编译器即可。

首先,也是 zlib 的交叉编译,没做这一步的同学,参考:https://blog.csdn.net/wkd_007/article/details/140573322。

然后,也是复制一份 minizip 源码出来,修改 Makefile 如上个小节那样;

最后,执行下面 make 命令:

make CC=aarch64-mix210-linux-gcc AR=aarch64-mix210-linux-ar ZLIB_PATH=../result_mix210

在这里插入图片描述

🎄五、总结

本文介绍了minizip,以及在 Linux(Ubuntu18.04)下,minizip的编译、交叉编译。

在这里插入图片描述
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/890064.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp地址类 方法

关于点击没反应 manifest.json 检查是否添加了对应的权限 /* 小程序特有相关 */"mp-weixin" : {"appid" : "wxc481f10754f1d9df","setting" : {"urlCheck" : false,"es6" : true,"postcss" : true,&qu…

WebContainerapi 基础(Web IDE 技术探索 一)

前言 随着web技术的发展,在网页端直接运行node.js、实现微型操作系统已经不再是难事。今天介绍的 WebContainers就是一个基于浏览器的运行时,用于执行 Node.js 应用程序和操作系统命令,它完全运行在您的浏览器页面中,提供了文件系…

【爬虫开发】爬虫开发从0到1全知识教程第11篇:Mongodb数据库,介绍【附代码文档】

本教程的知识点为:爬虫概要 爬虫基础 爬虫概述 知识点: 1. 爬虫的概念 requests模块 requests模块 知识点: 1. requests模块介绍 1.1 requests模块的作用: 数据提取概要 数据提取概述 知识点 1. 响应内容的分类 知识点&#xff1a…

FFmpeg 安装教程(Windows 系统)

1. 前言 FFmpeg 是一个用于处理视频、音频等多媒体文件的开源工具包。它支持几乎所有的多媒体格式转换、剪辑和编辑,是开发者和多媒体工作者必备的工具。本文详细讲解如何在 Windows 系统上安装 FFmpeg 并进行基本配置。 2. 下载 FFmpeg 安装包 打开 Dpwnload FFmp…

【AutoDL】通过【SSH远程连接】【vscode】

小帅碎碎念 0. 起因1. SSH信息获取2. 给你的vscode安装支持SSH远程连接的插件3. SSH远程连接入口4. 输入密码登陆5. 总结 0. 起因 之前使用AutoDL和Jupyter进行代码编辑和执行确实很方便,尤其是对于交互式数据分析项目。然而,也存在一些限制和不便之处&…

C# 识别二维码

文章目录 一. 二维码识别技术概述二 维码识别的步骤图像预处理二维码的定位和检测二维码解码 三 常用的二维码识别库1. OpenCV2. ZXing.Net 一. 二维码识别技术概述 二维码是一种通过黑白矩阵排列来编码数据的图形符号,它的编码方式具有较强的容错性,可以…

如何在 Linux 服务器上部署 Pydio Cells 教程

简介 Pydio Cells 是一个开源的文档共享和协作平台,专为你的组织设计。它允许你在组织内部分享文档和文件,并让你完全掌控文档共享环境。 在本教程中,我们将向你展示如何在 Alma Linux 9 服务器上安装 Pydio Cells。你将使用 MariaDB 数据库…

OkHttp源码分析:分发器任务调配,拦截器责任链设计,连接池socket复用

目录 一,分发器和拦截器 二,分发器处理异步请求 1.分发器处理入口 2.分发器工作流程 3.分发器中的线程池设计 三,分发器处理同步请求 四,拦截器处理请求 1.责任链设计模式 2.拦截器工作原理 3.OkHttp五大拦截器 一&#…

(2024年最新)Linux(Ubuntu) 中配置静态IP(包含解决每次重启后配置文件失效问题)

Hello! 亲爱的小伙伴们,大家好呀(Smile~)!我是Huazzi,欢迎观看本篇博客,接下来让我们一起来学习一下Ubuntu 中如何配置静态IP吧!祝你有所收获! 提前对Linux有所了解的小伙伴应该知道…

vue3渲染el-tree组件,给默认选中的节点,禁用所有子节点

实现逻辑&#xff1a;给默认选中节点的所有子节点添加一个disabled属性&#xff0c;以此禁用子节点。 编写代码 <template><el-tree :props"{ children: children, label: name }" :data"treeListData" show-checkbox node-key"id" r…

uniapp中vuex(全局共享)的应用

一、Vuex概述 1.1 官方解释 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。 它采用集中式存储管理 应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化 - Vuex 也集成到 Vue 的官方调试工具 devtools extension&#xff0c;提供了诸…

Unity中触发器Trigger无法被射线检测到的问题

今天在做项目的时候发现,同一个物体,当他是碰撞器的时候,可以被射线检测到. 但是当他变成触发器的时候,射线就检测不到了??? 本来以为就是这样的,但是查了资料发现并没有这样的限制,触发器也是可以正常被射线检测的 到处查资料都没有发现问题,后来发现是下面这个设置不知道…

搭建springmvc项目

什么是springmvc MVC它是一种设计理念。把程序按照指定的结构来划分: Model模型 View视图 Controller控制层 springmvc框架是spring框架的一个分支。它是按照mvc架构思想设计的一款框架。 springmvc的主要作用: 接收浏览器的请求数据&#xff0c;对数据进行处理&#xff0c;…

超越 RAG 基础:AI 应用的高级策略

作者&#xff1a;来自 Elastic Elastic Platform Team 我们最近与 Cohere 举办的虚拟活动深入探讨了检索增强生成 (retrieval augmented generation - RAG) 的世界&#xff0c;重点讨论了在概念验证阶段之后构建 RAG 应用程序的关键注意事项。我们的演讲者是 Elastic 的首席解…

音频开发中常见的知识体系

在 Linux 系统中&#xff0c;/dev/snd 目录包含与声音设备相关的文件。每个文件代表系统中的一部分音频硬件或音频控制接口。以下是你列出的文件及其含义&#xff1a; 一.基本术语 样本长度(sample)&#xff1a;样本是记录音频数据最基本的单位&#xff0c;计算机对每个通道采…

贪心算法 part01

class Solution { public:int maxSubArray(vector<int>& nums) {int result INT32_MIN;int count 0;for (int i 0; i < nums.size(); i) {count nums[i];if (count > result) { // 取区间累计的最大值&#xff08;相当于不断确定最大子序终止位置&#xff…

Ubuntu 安装texstudio sty与texlive

手动安装需要的包 访问CTAN网站&#xff08;Comprehensive TeX Archive Network&#xff09;并下载enumitem宏包&#xff1a; enumitem CTAN页面下载后&#xff0c;将宏包解压到/usr/share/texmf/tex/latex/下。 可打开texstudio/帮助/宏包帮助下载。 如果不想手动安装一个个…

Moretl安全日志采集工具

永久免费: 至Gitee下载 使用教程: Moretl使用说明 使用咨询: 用途 定时全量或增量采集工控机,电脑文件或日志. 优势 开箱即用: 解压直接运行.不需额外下载.管理设备: 后台统一管理客户端.无人值守: 客户端自启动,自更新.稳定安全: 架构简单,兼容性好,通过授权控制访问. 架…

CAN配置---波特率中断引脚等---autochips-AC7811-ARM-M3内核

1、配置工具 虽然不怎么好用&#xff0c;但比没有强多了。具体看图&#xff1a; 时钟选着 NVIC配置 GPIO配置 2、生成的具体配置信息 NXP的配置工具里面&#xff0c;具体的波特率可以直接显示&#xff0c;这个工具没有&#xff0c;怎么办&#xff1f; 它放到了生成的代码里面…

【ETCD】ETCD 架构揭秘:内部各组件概览

ETCD 的主要组件及它们之间的关联关系如下&#xff1a; 目录 1. Client&#xff08;客户端&#xff09;2. gRPC 接口3. Etcd Server Main Loop&#xff08;ETCD 主循环&#xff09;4. Raft&#xff08;共识模块&#xff09;5. Peer Etcd Nodes&#xff08;ETCD 集群节点&#x…