项目简介
zlib-ng 是一个现代化的压缩库,目标是为下一代系统提供高效的数据压缩和解压缩功能。它是经典 zlib 库的优化版本,保留了 zlib 的 API 兼容性,同时引入现代 C11 语法与多种硬件加速优化,尤其适用于 x86、ARM 和 IBM Z 架构,可作为高性能替代方案用于需要高效压缩和解压缩的场景。
项目的主要特性和功能
- API 兼容性:完全兼容 zlib 的 API,支持双链接模式,能无缝替换现有 zlib 库。
- 硬件加速:支持多种 CPU 指令集优化,涵盖 x86(SSE2、SSE4.2、AVX2、PCLMULQDQ 等)、ARM(Neon 和 ACLE 指令集)、IBM Z(DFLTCC 和 CRC32 向量指令集)。
- 现代 C11 语法:代码采用现代 C11 语法,结构清晰,便于维护和扩展。
- 多平台支持:支持 Windows、macOS 和 Linux 系统,提供跨平台的构建工具(CMake、Configure、NMake)。
- 测试与验证:包含全面的单元测试、模糊测试和代码覆盖率工具,保证代码的健壮性和稳定性。
安装使用步骤
假设用户已经下载了本项目的源码文件。
1. 构建项目
zlib-ng 支持多种构建方式,以下是两种常见构建方法:
使用 CMake 构建
bash
cmake .
cmake --build . --config Release
ctest --verbose -C Release
使用 Configure 脚本构建
bash
./configure
make
make test
2. 安装
警告:手动安装可能会覆盖系统的默认 zlib 库,建议仅在明确知道操作后果的情况下进行。
使用 CMake 安装
bash
cmake --build . --target install
使用 Configure 脚本安装
bash
make install
3. 使用 LD_PRELOAD 临时替换系统 zlib
若不想全局替换 zlib,可使用 LD_PRELOAD
环境变量临时替换:
bash
LD_PRELOAD=/opt/zlib-ng/libz.so.1.2.11.zlib-ng /usr/bin/program
构建选项
zlib-ng 提供多种构建选项,常用选项如下: | CMake 选项 | Configure 选项 | 描述 | 默认值 | |-----------------------------|-------------------------|----------------------------------------------------------------------|--------| | ZLIB_COMPAT | --zlib-compat | 编译为 zlib 兼容 API | OFF | | WITH_AVX2 | | 启用 AVX2 指令集优化 | ON | | WITH_SSE2 | | 启用 SSE2 指令集优化 | ON | | WITH_SANITIZER | --with-sanitizer | 启用内存、地址和未定义行为的检测 | OFF | | WITH_FUZZERS | --with-fuzzers | 构建模糊测试工具 | OFF | | WITH_CODE_COVERAGE | | 启用代码覆盖率报告 | OFF |
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】