独立跨平台(Windows / Linux))C / C ++的文件压缩?

我正在寻找一个用C或C ++开发的(可以小的)开源库,我可以将它包含在我的MIT许可项目中(托管在谷歌代码上)。 我是一个爱好C / C ++程序员,所以我不是那么先进,但我知道我需要为名为“SA-MP”的应用程序开发插件(适用于Windows和Linux)。 我愿意做的是一个自动安装程序,它需要能够解压缩压缩文件(最好是.zip,但任何其他文件压缩方法都可以!)。

我已经找了这样一个库,但是他们总是需要在windows上有一些额外的dll或linux上的其他一些文件 – 这不是我要找的东西,因为最终用户可能无法知道如何安装插件用它所需的组件。

另外看一下Basic Compression Library,它似乎没有文件压缩,只是算法。 所以有了那个,我运气不好。

要使上述文字简短:

  • 如果可以链接到我的C / C ++项目,则不允许外部依赖项,需要额外的库。
  • 可以压缩整个目录并解压缩它们。
  • 适用于Windows和Linux。
  • 可以安全地与MIT许可证一起使用(可选,优先)

zlib有什么问题(这是显而易见的第一件事;每个人都使用它)或libzip (首先点击freshmeat )?

  • zlib:库本身只提供压缩,但是您可以使用zip格式的示例实现。 “zlib许可证”略有修改MIT / X许可证,因此应兼容。 作为您的应用程序的一部分构建的简单。
  • libzip:支持zip格式。 BSD修订许可证; 你必须维护它,但它基本上等同于MIT / X许可证。 也可以静态链接。

通常,没有技术原因可以动态链接任何内容 。 你没有。 但是,LGPL许可库存在合法原因,因为LGPL在动态对象边界处停止,因此静态链接也会使其他代码成为LGPL。

关于压缩库,有几种具有低至极低依赖性的替代方案。 Zlib实际上是第一个浮现在脑海中的人,但可以说它的源代码树非常“拥挤”。 话虽这么说,我想这并不依赖于其他任何特别的东西。

更简单,但也更轻,你会找到替代品,如LZ4 ,其中整个源代码填充到一个文件,外部依赖只限于stdlib等。

在查找扫描目录的可移植库时,您可能会遇到更多困难,因为这些事情往往取决于操作系统。 我在想Shelwien的Shar ,但它可能与Windows有关。