littlebot
Published on 2025-04-11 / 0 Visits
0

【源码】基于C语言的下一代数据压缩库zlibng

项目简介

zlib-ng是为下一代系统打造的数据压缩库,它是zlib的一个分支。由于官方zlib仓库未对诸多第三方含新优化的贡献进行实现,因此产生了这个分支。其目的并非取代zlib,而是作为一个可直接替换的库,以更低的门槛进行代码更改。该库采用现代C99语法,代码布局简洁,具有多种优化特性。

项目的主要特性和功能

  1. 兼容与易用:提供与zlib兼容的API,支持双链接,同时基于zlib API的现代化原生API便于移植。
  2. 代码优化:运用现代C99语法和简洁的代码布局,去除诸多旧编译器的兼容性代码,减轻维护负担。
  3. 算法优化:采用基于英特尔zlib分支的Deflate中等和快速算法。
  4. 硬件加速:支持多种CPU指令集,包括SSSE3、AVX2、Neon、VSX、PCLMULQDQ、ACLE等,实现Adler32、CRC32 - B等的硬件加速;支持使用IBM Z DFLTCC进行硬件加速的Deflate。
  5. 内存优化:改进了未对齐内存读写和大位缓冲区。
  6. 功能集成:集成了Cloudflare和英特尔分支的改进。
  7. 构建系统:支持Configure、CMake和NMake构建系统,拥有全面的CMake单元测试。
  8. 质量保障:包含代码清理、模糊测试和覆盖率检测。

安装使用步骤

前提条件

用户已下载本项目的源码文件,并确保安装了C语言编译器和相关的依赖库。

构建方式

Cmake

bash cmake . cmake --build . --config Release ctest --verbose -C Release 也可使用cmake配置GUI工具ccmake: bash ccmake .

Configure

bash ./configure make make test

构建选项

| CMake | configure | Description | Default | |:-------------------------|:-------------------------|:--------------------------------------------------------------------------------------|---------| | ZLIB_COMPAT | --zlib-compat | Compile with zlib compatible API | OFF | | ZLIB_ENABLE_TESTS | | Build test binaries | ON | | WITH_GZFILEOP | --without-gzfileops | Compile with support for gzFile related functions | ON | | WITH_OPTIM | --without-optimizations | Build with optimisations | ON | | WITH_NEW_STRATEGIES | --without-new-strategies | Use new strategies | ON | | WITH_NATIVE_INSTRUCTIONS | --native | Compiles with full instruction set supported on this host (gcc/clang -march=native) | OFF | | WITH_SANITIZER | --with-sanitizer | Build with sanitizer (memory, address, undefined) | OFF | | WITH_FUZZERS | --with-fuzzers | Build test/fuzz | OFF | | WITH_MAINTAINER_WARNINGS | | Build with project maintainer warnings | OFF | | WITH_CODE_COVERAGE | | Enable code coverage reporting | OFF |

安装步骤

警告:除非您非常清楚自己在做什么,否则不建议手动安装,因为这可能会覆盖系统默认的zlib库,任何不兼容或错误的配置都可能导致整个系统无法使用,需要恢复或重新安装。如果仍要手动安装,建议使用 /opt/ 路径前缀。

对于Linux发行版,如果以zlib兼容模式编译,可通过 LD_PRELOAD 环境变量使用zlib-ng代替zlib: bash LD_PRELOAD=/opt/zlib-ng/libz.so.1.2.11.zlib-ng /usr/bin/program

Cmake

bash cmake --build . --target install

Configure

bash make install

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】