libzip是一个C库,用于读取、创建和修改zip和zip64格式的压缩文件。它支持从zip文件中读取、写入、添加和删除文件,还支持密码保护的zip文件。libzip是跨平台的,可以在多种操作系统上使用,包括Linux、Windows、macOS。

Current version is 1.10.1, released on August 23, 2023.

 

libzip官网:https://libzip.org

libzip Github:https://github.com/nih-at/libzip/tags

libzip-1.10.1.tar.gz   (2023-08-23)

libzip-rel-0-11.tar.gz (2013-03-25)

libzip-rel-0-10-1.tar.gz   (2012-03-20)

 

常用接口介绍

zip_open:用于打开一个 zip 文件。如果文件不存在,可以设置相应的标志来创建一个新的 zip 文件。
zip_close:关闭一个 zip 文件,并写入所有的更改。
zip_source_buffer:从内存缓冲区创建一个数据源,这个数据源可以用来向 zip 文件中添加内容。
zip_file_add:向 zip 文件中添加一个新的文件。
zip_fopen:打开 zip 文件中的一个文件,以便读取。
zip_fread:从打开的 zip 文件中读取数据。
zip_stat:获取 zip 文件中一个文件的信息,例如大小、修改时间。
zip_get_num_entries:获取 zip 文件中的条目数量

更多接口请见libzip官网:https://libzip.org/documentation/

 

下载安装 libzip

1)提前安装依赖cmake

libzip 不是用make编译,而是用cmake编译,默认安装的cmake版本较低,需自定义安装cmake升级版本

解决方案,详见本文下方的 "常见问题1"

 

2)自定义编译安装 libzip

wget https://study.mimvp.com/tool-server/libzip-1.10.1.tar.gz
tar zxvf libzip-1.10.1.tar.gz
cd libzip-1.10.1/
# vim INSTALL.md         # 查看安装帮助和参数
mkdir build             
cd build
cmake ..                # 注意: 指定源目录
make
make test
make install
#
## 查看build目录下的内容
# ls -al /home/data/tool-server/libzip-1.10.1/build
total 184
drwxr-xr-x  7 root root  4096 Jul  2 12:23 .
drwxrwxr-x 12 root root  4096 Jul  2 12:26 ..
-rw-r--r--  1 root root 33171 Jul  2 12:23 CMakeCache.txt
drwxr-xr-x  9 root root  4096 Jul  2 12:23 CMakeFiles
-rw-r--r--  1 root root  4850 Jul  2 12:23 cmake_install.cmake
-rw-r--r--  1 root root 57886 Jul  2 12:23 compile_commands.json
-rw-rw-r--  1 root root  1769 Jul  2 12:23 config.h
-rw-r--r--  1 root root   356 Jul  2 12:23 CTestTestfile.cmake
drwxr-xr-x  3 root root  4096 Jul  2 12:23 examples
-rw-r--r--  1 root root  6901 Jul  2 12:23 install_manifest.txt
drwxr-xr-x  3 root root  4096 Jul  2 12:23 lib
-rw-rw-r--  1 root root  1847 Jul  2 12:23 libzip-config.cmake
-rw-r--r--  1 root root  1862 Jul  2 12:23 libzip-config-version.cmake
-rw-rw-r--  1 root root   339 Jul  2 12:23 libzip.pc
-rw-r--r--  1 root root  2628 Jul  2 12:23 libzip-targets.cmake
-rw-r--r--  1 root root 12422 Jul  2 12:23 Makefile
drwxr-xr-x  3 root root  4096 Jul  2 12:23 man
drwxr-xr-x  3 root root  4096 Jul  2 12:23 src
-rw-rw-r--  1 root root  1183 Jul  2 12:23 zipconf.h

 

3)配置libzip环境变量

首先,查看系统安装的低版本libzip

## 查看系统默认安装的libzip版本
# rpm -qa | grep -iE "libzip|libzip-devel"
libzip-0.10.1-8.el7.x86_64
libzip-devel-0.10.1-8.el7.x86_64
#
## 说明:以上低版本的libzip-0.10.1,是系统安装导致: yum install libzip|libzip-devel -y

以上低版本libzip,可卸载 yum remove libzip|libzip-devel -y

然后,配置环境变量,一定是 lib64,不是lib,否则报错:

export PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig" # 正确,是libzip新安装的高版本
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"     # 错误,仍然读取libzip的低版本

最后,配置lib库资源:

## 1. 新建文件
vim /etc/ld.so.conf.d/libzip.conf
# 添加lib路径
/home/data/tool-server/libzip-1.10.1/build/lib
#
# 2. 修改文件
vim /etc/ld.so.conf
# 添加如下几行
/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64
# :wq 保存退出
#
## 3. 使ld.so.conf 配置文件生效
ldconfig -v

 

常见问题

1、cmake 编译错误,需 CMake 3.5.0 以上或更高

# cmake
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
CMake 3.5.0 or higher is required. You are running version 2.8.12.2

-- Configuring incomplete, errors occurred!

原因分析:cmake 编译错误,需 CMake 3.5.0 以上或更高,当前版本2.8.12.2过低

解决方案:下载cmake更高,并自定义安装

1)下载cmake

cmake官网:https://cmake.org/download/cmake历史版本  (github)

cmake-3.30.0-rc4.tar.gz  (2024-06-26,RC是发布候选版本,非正式版,不推荐

cmake-3.29.6.tar.gz  ( 2024-06-18,正式版,推荐

cmake-3.29.6.tar.gz  ( 2024-06-18)

cmake-3.29.6.tar.gz  ( 2024-06-18)

2)安装 cmake   (编译安装耗时较长、几十分钟)

wget https://study.mimvp.com/tool-server/cmake-3.29.6.tar.gz
tar zxvf cmake-3.29.6.tar.gz
cd cmake-3.29.6/
./configure     # 安装耗时较长
make            # 安装耗时很长
make install
source /etc/profile     # 使新安装的wget生效, 即 /usr/local/bin/curl 排在第一

 

 

参考推荐:

Linux 安装配置 memcached

CentOS 安装 memcached

CentOS 配置Apache、apr、apr-util、apr-iconv、sqlite3

CentOS 安装OpenSSL 支持 QUIC for http/3

Linux 安装 wget、curl