常用数据压缩库的编译与使用.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
常用数据压缩库的编译与使用

常用数据压缩库的编译与使用由于在工作中有用到数据压缩的功能,我便查找了一些压缩函数库,对这些函数库进行了简单的实验,简要对比了各自的性能。在这里,我既是对以前工作的总结,也同时希望能给其他人带来一些帮助。首先,因为我工作中使用的环境是嵌入式Linux系统,采用的是C语言,因此我在选择压缩函数库的时候主要是选择一些能交叉编译的函数库。我前后共实验了三种函数库,分别是:LZO、ZILB和LZMA。分别在Windows平台和嵌入式Linux平台实验。由于我对压缩算法并没有深入的了解,实验的结果也不能确保一定正确,仅仅为作为一个参考。数据压缩库简介1.1LZO库简介LZO库在描述自己的时候使用的是“实时数据压缩库”(a real-time data compression library),这就意味着LZO库是更加重视数据压缩的速度。该项目的主页是/opensource/lzo/,LZO 遵循 GNU 的 GPL 使用许可。LZO库最初采用ANSI C编写,是一个无损压缩库。它提供多个压缩函数接口,要得到高的压缩率,就会降低压缩速度,然而,解高压缩率的数据并没有明显速度。详细的说明可以参考其工程目录下的doc/LZO.TXT文件,这里简单列出该压缩库的一些特点:解压速度非常快,解压不需要额外的内存空间。压缩速度也非常快,压缩只需要64k的内存。提供函数接口用来牺牲速度来换取高压缩率,但解压速度不降低。有仅仅需要8k内存的压缩算法。算法是线程安全的无损压缩算法。ZLIB库简介ZLIB库是一个通用的数据压缩库,它几乎已经成为了一个业界的标准,在许多软件中得到应用。该项目的主页是/,ZLIB是自由软件,使用ZLIB授权。ZLIB数据压缩库同样是一个无损压缩库,对线程也是安全的。它提供数据压缩接口,同时也提供了gzip文件的读写接口。函数库提供了对处理器和内存使用控制的能力,可以在诸如嵌入式系统这样内存有限制的环境中是有用的。详细的说明可以参考其工程目录下doc目录中的文档。LZMA库简介LZMA是一个Deflate和LZ77算法改良和优化后的压缩算法库,具有很高的压缩比。2001年被首次应用于7-Zip压缩工具中,是 2001年以来得到发展的一个数据压缩算法。项目主页为/sdk.html,LZMA是公开的压缩库。LZMA库具有高的压缩比和较快的速度,解压代码和占用的内存都比较小。其压缩所需要的内存是:字典大小*11.5+6M+状态大小。解压需要的内存是:字典大小+状态大小。详细的说明可以参考其工程目录下doc目录中的文档。2数据压缩库的编译方法由于我要测试Windows平台和嵌入式Linux平台下的运行情况,因此这里只是列举这两个平台的编译方法。编译的目标是静态库,这里列举的方法可能不是最简单的编译方法,如果你有更加方便或规范的编译方法请与我联系。2.1 LZO库的编译我使用的LZO库的版本是2.09Windows平台编译在LZO工程文件中目录B/win32和B/win64目录中有编译的批处理文件,可是我在实际使用的过程中不能正确执行,不知道是不是哪里出了问题,我使用的方法是新建立一个VS工程,包含工程目录下的src和include目录生成静态库文件,最终编译出了LZO的Windows静态库。交叉编译LZO的交叉编译时非常简单的,只要进入LZO的目录,依次输入一下命令就可以完成LZO的交叉编译。设置编译器: export CC=你的编译器。设置AR程序:export AR=你的AR程序。设置安装目录./configure --host=arm-linux --prefix=$PWD/amr_install/执行make命令。执行make install命令。在这些命令都执行完成之后,LZO的静态库和头文件就会放在工程目录的amr_install文件夹中。在执行make install可能会出现错误,我在执行过程中就出现了chmod无法更改权限的错误,可能是因为我使用虚拟机编译的原因,不过无所谓,自己复制一下就好啦。2.2 ZLIB库的编译我使用的ZLIB库版本是1.2.8Windows平台下编译ZLIB的Windows下编译很简单,在ZLIB的工程目录下contrib/vstudio/目录中有vc9、vc10、vc11三个文件夹。分别对应不同的VS版本,我安装的是VS2013可以打开vc11。其中的zlibstat工程是用来编译静态库的,只需选中工程点击生成即可。另外,在ZLIB静态库使用的过程中可能会出现函数找不到实现这样的情况,出现这个问题的原因很可能是__stdcall调用和__cdecl调用的问题。解决方法是讲zconf.h中的# defineZEXPORTWINAPI改为:# defineZEXPORTWINAP

文档评论(0)

abf4675328 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档