嵌入式 linux 之 Lzma 移植

简介: 嵌入式 linux 之 Lzma 移植

基本介绍


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


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


下载


image.png


解压


image.png


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


image.png


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


image.png


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


image.png


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


image.png


  • e:解压当前目录下


  • x:解压到同名目录下


  • l:列出包含的文件内容


  • 添加o支持。vim 7zMain.c


  1. 添加用户说明

image.png


  1. 参数处理

image.png


  1. 文件处理

image.png


  1. 资源释放

image.png


  1. 测试命令


7zDec x xxx.7z o/tmp


lzma 移植


  • cd lzma1900/C/Util/Lzma

image.png


  • vim makefile.gcc

image.png


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

image.png


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


image.png


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


总结


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

相关文章
|
6月前
|
网络协议 算法 Linux
【嵌入式软件工程师面经】Linux网络编程Socket
【嵌入式软件工程师面经】Linux网络编程Socket
172 1
|
4月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
105 3
|
4月前
|
传感器 人工智能 网络协议
:嵌入式 Linux 及其用途
【8月更文挑战第24天】
196 0
|
5月前
|
Ubuntu 算法 Linux
嵌入式Linux的学习误区
**嵌入式Linux学习误区摘要** 1. **过度聚焦桌面Linux** - 许多学习者误将大量时间用于精通桌面Linux系统(如RedHat、Fedora、Ubuntu),认为这是嵌入式Linux开发的基石。 - 实际上,桌面Linux仅作为开发工具和环境,目标不应是成为Linux服务器专家,而应专注于嵌入式开发工具和流程。 2. **盲目阅读Linux内核源码** - 初学者在不了解Linux基本知识时试图直接研读内核源码,这往往导致困惑和挫败感。 - 在具备一定嵌入式Linux开发经验后再有针对性地阅读源码,才能有效提升技能。
|
6月前
|
存储 编解码 Ubuntu
【QT】linux下alsa库的移植和QT中音视频的处理&笔记
【QT】linux下alsa库的移植和QT中音视频的处理&笔记
|
6月前
|
消息中间件 安全 Java
【嵌入式软件工程师面经】Linux多进程与多线程
【嵌入式软件工程师面经】Linux多进程与多线程
71 1
|
6月前
|
存储 缓存 Unix
【嵌入式软件工程师面经】Linux文件IO
【嵌入式软件工程师面经】Linux文件IO
50 1
|
6月前
|
网络协议 Linux 编译器
【原创】EtherCAT主站IgH解析(二)-- 如何将Igh移植到Linux/Windows/RTOS等多操作系统移植指南
EtherCAT主站方案对比:商业的如Acontis、TwinCAT3和开源的igh、SOEM。SOEM易移植但功能和实时性不足,适合简单应用;igh功能强大,实时性能优秀,基于内核态,适合复杂场景。igh能移植到其他RTOS,但需克服多任务无调度的挑战。依赖操作系统服务如定时器、内存分配,适合Linux内核,但移植到裸机复杂。
247 0
|
14天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
103 6
|
15天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
57 3