基本介绍
在嵌入式很多应用场景中,经常会遇到存储空间不够。这个时候就需要采取一些手段,将应用程序或者文件压缩。对启动速度要求不高的场合可以使用。

本文基于开源库 LZMA SDK (https://www.7-zip.org/sdk.html)做介绍

​下载

解压

LZMA-SDK包括以下内容:
LZMA编码器和解码器的C ++源代码
.7z压缩和解压缩的C ++源代码(精简版)
LZMA / LZMA2 / XZ压缩和解压缩的ANSI-C兼容源代码
7z解压缩的ANSI-C兼容源代码示例
用于LZMA压缩和解压缩的C#源代码
用于LZMA压缩和解压缩的Java源代码
lzma.exe为.lzma压缩和解压
7zr.exe与7z存档一起使用(7-Zip的7z.exe的简化版本)

由于是在嵌入式平台移植,故只介绍C语言的交叉编译。

7zDec 移植
cd lzma1900/C/Util/7z

vim makefile.gcc。将工具链修改为对应平台

make -f makefile.gcc.生成可执行程序 7zDec

7zDec 支持的命令。默认只支持7za命令的3个选项,而不支持-o(指定解压目录)功能。因此,如果需要该功能,则需要修改源码。

e:解压当前目录下

x:解压到同名目录下

l:列出包含的文件内容
添加o支持。vim 7zMain.c

添加用户说明

参数处理

文件处理

资源释放

测试命令

7zDec x xxx.7z o/tmp

lzma 移植
cd lzma1900/C/Util/Lzma

vim makefile.gcc

make -f makefile.gcc 生成可执行程序 lzma

lzma 支持的命令:目前只支持e和d两个命令

lzma d xxx.lzma /tmp/xxx:解压到指定目录下。

总结
本文主要介绍了,嵌入式项目中两种常见的解压工具移植。将应用程序或者文件压缩,虽然省掉了空间。同时会带来新的问题,启动时间过慢,占用过多的内存。具体情景视产品定义,酌情处理。 

【学习交流群197416462】

【自己收集的网盘资料包,需要的自行领取,全部免费】:

嵌入式物联网 22个STM32项目、大赛作品,【华清远见发放资料包】http://makerschool.mikecrm.com/f4wjYBB【下面分享一些相关学习教程,感兴趣的可以看下】:

linux基础(系列课程)

 快速上手linux

 Linux网络经典案例

Linux网络高并发技术之epoll

Linux开发调试技巧

linux高级

Linux开发技巧:共享内存应用及陷阱

Linux(驱动)

Linux设备驱动模型-Kobject

嵌入式 linux 之 Lzma 移植相关推荐

  1. 【Linux】嵌入式Linux系统的移植(上篇:交叉编译器、连接方式)

    嵌入式Linux系统移植 嵌入式Linux系统移植是进行Linux驱动开发的基础,如果连Linux系统移植都完成不了,那就更不用说驱动开发了.因此,Linux系统移植至关重要. 嵌入式Linux系统的 ...

  2. 推荐一款不错的嵌入式GUI(玲珑GUI)及在嵌入式linux上的移植

    玲珑GUI介绍 玲珑GUI(LLGUI)是一套使用简单.低价的单片机GUI解决方案.可以用来代替串口屏.组态,降低产品成本,产品软硬件自主可控. 配套界面开发软件,图形化编辑界面,生成C代码. 如其名 ...

  3. 嵌入式linux usb wifi移植[s3c6410平台原创]

    文档名称:嵌入式linux usb wifi驱动移植 版本历史 v1.0b001 2012-6-18 linuxusb wifi 嵌入式linux usb wifi移植参考文档 ■ realARM 6 ...

  4. linux用户环境下进入uboot,嵌入式linux开发uboot移植(一)——uboot项目简介

    嵌入式linux开发uboot移植(一)--uboot项目简介 一.uboot简介 U-Boot,全称 Universal Boot Loader,是遵循GPL条款的从FADSROM.8xxROM.P ...

  5. arm linux 内核配置,嵌入式 Linux开发Kernel移植(二)——kernel内核配置和编译

    嵌入式 Linux开发Kernel移植(二)--kernel内核配置和编译 本文选择linux 2.6.35.7版本kernel进行实践. 一.linux kernel源码目录分析 Kbuild,Ke ...

  6. go移植linux内核书名叫啥,嵌入式 Linux根文件系统移植之Linux文件系统简介-Go语言中文社区...

    学号:16020311003    姓名:杨虎成 [嵌牛导读]Linux支持多种文件系统,文件系统接口实现为分层的体系结构,将用户接口层.文件系统实现和操作存储设备的驱动程序分隔开 [嵌牛鼻子]Lin ...

  7. 【Linux】嵌入式Linux系统的移植(下篇:BootLoader,以U-Boot为例)

    BootLoader BootLoader的概念 BootLoader就是在操作系统内核运行之前运行的一段小程序.通过这段小程序,可以初始化硬件设备.建立内存空间的映射图,从而将系统的软硬件环境带到一 ...

  8. 嵌入式linux开发04-roottfs移植

    前言 本篇继续根据<i.mx6u驱动开发指南V1.6.pdf>梳理根文件系统移植过程. linux目录含义简介 /bin 存放系统的可执行文件,一般都是一些终端命令,比如 ls . mv ...

  9. gsoap linux 编译,gSOAP嵌入式linux下的移植与程序开发

    一.移植 1.下载源码 本例下载最新版本为:gsoap_2.8.33.zip 2.解压源码 $ unzip gsoap_2.8.33.zip 3.平台准备unbuntu1204 $sudo apt-g ...

最新文章

  1. 说说设计模式~建造者模式(Builder)
  2. CodeForces - 1527E Partition Game(dp+线段树)
  3. 实例47:python
  4. 微服务精华问答 | 在使用微服务架构时,您面临哪些挑战?
  5. java teechart怎么用_TeeChart使用范例
  6. 解决 ImportError: No module named 'pip._internal'问题
  7. 支持统一码 10 的花园明朝字库终于更新出来了
  8. 计算机网络的硬盘组成,大卸八块!编辑为你揭秘硬盘的内部结构
  9. Alex Chen:3月21日阿里云北京峰会演讲大神
  10. 杀OSO.EXE和conime.exe过程总结
  11. JS短文 | 3分钟了解下 JS Sets 集合
  12. ACCESS使用技巧三则
  13. 使用ffmpeg批量合并flv文件
  14. 菜狗为了打败菜猫,学了一套如来十三掌
  15. leetcode 179 最大数
  16. vue与webpack
  17. NavicatPremium写的MySQL文件去哪?
  18. 利用DW制作简单网页
  19. error: can‘t create transaction lock on /var/lib/rpm/.rpm.lock (Permission denied)
  20. SpringCloud Gateway + Spring Security

热门文章

  1. 英语:日常用语中的错误表达和正确表达
  2. 学会放松和享受当下极其重要
  3. 如何使用node.js后端框架中的egg.js框架
  4. uniapp做自己的启动页
  5. Java多线程学习详细学习及扩展
  6. 三个基本的布尔逻辑算符是_布尔逻辑运算符有几种,定义和功能分别是什么
  7. 添加额外jars包到Hive
  8. 基因功能分析——哈佛大学
  9. WebGL矩阵变换总结(模型矩阵,视图矩阵,投影矩阵)
  10. 啊?你还在用vmware,快来试试免费好用的Hyper V吧!