【问题标题】:Ultra-light gzip compression implementation?超轻的gzip压缩实现?
【发布时间】:2009-12-19 09:22:03
【问题描述】:

我正在寻找一个基于库(BSD、MIT、PD)许可证的 C++ 超轻型 gzip 压缩/解压缩库(绝对比 zlib 更轻)。谷歌搜索显示了许多库,但它们要么过于臃肿(如 Crypto++ 中的 GZ 压缩),要么具有更严格的许可证。

我很难相信,没有轻量级的免费 gz 实现......

最好是 C++(我需要以流的形式使用它),但 C 可以。

【问题讨论】:

  • 你还在使用 gzip 压缩吗?
  • 不完全是。但如果我要选择另一种,它必须是被广泛支持的一种(AS3、PHP、Python)。
  • 我正要提到 LibLZF 和 FastLZ,但我不认为它们为 C 和 C++ 以外的其他语言提供绑定
  • zlib 有什么不轻量级的?是在代码大小方面吗?还是在 API 方面? zlib 有一个简化的 API,您可以通过一个函数调用将内存中的字节流(解)压缩到另一个缓冲区中。
  • 如果其他语言支持该算法就足够了。我只是希望它在 C++ 方面是轻量级的。

标签: c++ gzip


【解决方案1】:

静态链接的 zlib 可能是你能得到的最轻量级的,它也有一个相当不错和慷慨的许可。

如果它真的不够轻,即使考虑到链接器会去掉什么,然后将其切割成自己的大小可能是一个可行的选择。

【讨论】:

  • 这是我也关心的源分布大小。理想情况下,我想在库中另外包含两个或四个附加文件。
  • 如果源文件的数量让你感到困扰,那么在 zlib 中破解我认为你可以很容易地将所有头文件合并到一个或两个文件中,并将实现文件合并到一个或还有两个。我能问你为什么这么关心源文件的数量吗?这是一个不寻常的要求。
【解决方案2】:

【讨论】:

  • 我不想链接到 zlib。
【解决方案3】:

zlib utility functions

这些都很轻巧。通常只需要一个函数调用,假设所有数据都已经在适当的缓冲区中,这应该很容易。如果您想要比这更轻量级的东西(这可能不在宏伟计划中,因为您可能需要管理更多依赖项),klamlaluno 发布的内容看起来不错。

【讨论】:

  • 如前所述 -- 我不想链接到 zlib,我想将我的项目静态编译为一个准系统轻量级简单 gz 压缩和解压缩。
  • 那你为什么不使用静态zlib库并静态链接呢?然后,链接器将只获取您的应用程序使用的库部分。
  • 因为我还需要分发我的库的源代码。
  • zlib 的许可证允许这样做。我没有看到问题。
猜你喜欢
  • 2010-10-07
  • 2015-07-14
  • 1970-01-01
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多