目前在做OTA差分算法研究,基于baidu.google, gayhub各种资料和途径,整理出来了三种OTA算法的安装步骤及使用方法。

1.bsdiff

我就不简介了,网上百度巴拉巴拉一大堆,我就把如何安装还有使用命令的教程给列出来。

a 依赖的tar bsdiff-4.3.tar.gz    bzip2-1.0.6.tar.gz

解压:    tar –zxvf bsdiff-4.3.tar.gz

解压:    tar –zxvf bzip2-1.0.6.tar.gz

重命名:  mv bzip2-1.0.6.tar.gz  bzip2

将bzip2文件夹移动到 /usr/local/include :   sudo  cp –r bzip2 /usr/local/include

b 依赖的源

yum install bzip2-devel.x86_64 进行下载

c修改 bsdiff-4.3 文件夹里面的 bsdiff.c 和bspatch.c

在include 头里添加

#include "bzip2/bzlib.c"

#include "bzip2/crctable.c"

#include "bzip2/compress.c"

#include "bzip2/decompress.c"

#include "bzip2/randtable.c"

#include "bzip2/blocksort.c"

#include "bzip2/huffman.c"

如图:

修改Makefile

在.ifndef和.endif 前面加一个 tab 空出距离,否则报错

如图:

准备工作完成以后 进行编译 : make

1.1运行命令

两个绿色的就是编译出的命令行

差分:  ./bsdiff  [oldfile] [newfile] [patchName]

合成:  ./bspatch [oldfile] [newFileName] [patchName]

对比文件是否有差异: sha1sum  [fileName] 检验文件完整性和hash值。

2.hdiffpatch

a 需要用到的zip包:  HDiffPatch-master.zip , lz4-dev.zip, zstd-dev.zip, lzma-master.zip

b解压

unzip HDiffPatch-master.zip

unzip lz4-dev.zip

unzip zstd-dev.zip

unzip lzma-master.zip

重命名

mv HDiffPatch-master  hdiffpatch

mv lz4-dev  lz4

mv zstd-dev  zstd

mv lzma-master  lzma

在/usr/local/include/bzip2 目录下 将 bzlib.h 复制到 /usr/local/include

sudo   cp bzlib.h  ../

安装 zlib:  yum install -y zlib zlib-devel (如果是ubuntu的话 需要  apt-get install zlib1g zlib1g-dev)

c 编译:

成功结果:

2.1使用命令

执行命令的语法:

拆分: ./hdiffz [oldFile] [newFile] [patchName]

合成: ./hpatchz [oldFile] [patchName][oldFileName]

命令详解:

hdiffz [-m[-matchScore]|-s[-matchBlockSize]]  [-c-compressType[-compressLevel]] [-o] oldFile newFile outDiffFile

hpatchz  [-m|-s[-s-cacheSize]]  [-o] oldFile diffFile outNewFile

建议命令参数:

      hdiffz run by: -s-128 -c-bzip2-9 [oldFile] [newFile] [outDiffFile]
    hpatchz run by: -s-4m [oldFile] [diffFile] [outNewFile]

对比文件是否有差异: sha1sum  [fileName] 检验文件完整性和hash值。

2.2hdiffz 参数简介

-m matchScore

使用matchScore将所有文件加载到内存中,默认是difffileSize 这种方式不推荐.

-s-matchBlockSize

所有文件加载为流式处理,参数由matchBlockSize决定,参数设置例如 128 128K 128M

默认128,建议32 - 16K 64K 1M等。

特殊选项:

C-压缩-压缩能级

设置差分文件的压缩类型和级别,默认不压缩;

支持压缩类型和级别:

(参考:HTTPS://Github. COM/SISON/LZTAMP/BROB/MARST/LZTAT17171SORTED.D)

 -zlib[-{1..9}]              DEFAULT level 9

        -bzip2[-{1..9}]             DEFAULT level 9
        -lzma[-{0..9}[-dictSize]]   DEFAULT level 7
            dictSize(==decompress stream size) can like 4096 or 4k or 4m or 128m etc..., DEFAULT 4m
        -lz4                         no level
        -lz4hc[-{3..12}]            DEFAULT level 11
        -zstd[-{0..22}]             DEFAULT level 20

2.3hpatchz 参数简介

内存参数:

-m  旧文件全部加载入内存

-s-cacheSize  旧文件以流的方式加载。

cacheSize can like 262144 or 256k or 512m or 2g etc..., DEFAULT 128m

3.Xdelta3

  1. 依赖的包 xdelta-gpl-release3_1.zip
  2. 解压,unzip xdelta-gpl-release3_1.zip

cd   xdelta-gpl-release3_1/xdelta3

在当前文件夹执行命令:   ./run_release.sh

autoscan .

aclocal

autoheader

automake –add-missing

./configure

make

3.1命令

执行命令的方法

拆分 :  ./xdelta3 -v -e -s [oldFile] [newFile] [patchName]

合成 :  ./xdelta3 -v -d -s [oldFile] [patchName] [newFileName]

对比文件是否有差异: sha1sum  [fileName]  检验文件完整性和hash值。

命令详细参数

用法: xdelta3 [命令/选项] [input [output]]

特殊命令名:

config      输出 xdelta3 配置信息

decode      解压缩 input

encode      压缩 input

test        运行内置的测试

为 VCDIFF 输入所用的特殊命令:

printdelta  输出整个变化的信息

printhdr    输出第一个窗口的信息

printhdrs   输出所有窗口的信息

标准选项:

-0 .. -9     压缩等级

-c           使用 stdout

-d           解压缩

-e           压缩

-f           强制覆盖

-h           显示帮助

-q           静默模式

-v           使用详细信息(最大2)

-V           显示版本

内存选项:

-B bytes     源窗口大小

-W bytes     输入窗口大小

压缩选项:

-s source    如果存在,选择来源文件从哪儿复制

-S [djw|fgk] 启用/弃用二级压缩

-N           弃用小字符串匹配压缩

-D           弃用外部解压缩 (压缩/解压缩)

-R           弃用外部重压缩 (压缩)

-n           弃用校验 (压缩/解压缩)

-C           软配置 (压缩, 无文档的)

-A [apphead] 弃用/提供程序头部 (压缩)

4.系统环境

系统:centos7

依赖:C++ gcc –v和 g++ -v  如果没有显示出对应的版本,则需要

执行 :yum groupinstall "Development Tools"

安装一些常用的开发者开发命令

OTA三种差分算法安装使用。bsdiff,hdiffpatch,xdelta3相关推荐

  1. Xdelta3 bsdiff Courgette三种差分算法比较

    今天介绍常用的三种差分算法,分别是Xdelta3 bsdiff Courgette. Xdelta3 官网地址: http://xdelta.org 源码地址:https://github.com/j ...

  2. python 三种聚类算法(K-means,AGNES,DBScan)

    python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan) 更新时间:2019年06月27日 14:44:44   作者:weixin_42134141 这篇文章主要介绍了pyth ...

  3. 近似装箱问题(三种联机算法实现)

    [0]README 0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解 "近似装箱问题(三种联机算法实现)" 的idea 并用源代码加以实现: 0.2) 近似 ...

  4. 三种Hash算法对比以及秒传原理.

    三种Hash算法对比以及秒传原理 CRC (32/64)   MD5  Sha1 分5个点来说 1.校验值长度 2.校验值类别 3.安全级别 4.应用场景 1).校验值长度 CRC(32/64) 分别 ...

  5. 常用的三种线性模型算法--线性回归模型、岭回归模型、套索回归模型

    常用的三种线性模型算法–线性回归模型.岭回归模型.套索回归模型 线性模型基本概念 线性模型的一般预测模型是下面这个样子的,一般有多个变量,也可以称为多个特征x1.x2.x3 - 最简单的线性模型就是一 ...

  6. 20172328 蓝墨云实验——三种查找算法练习

    20172328 蓝墨云实验--三种查找算法练习 课程:<软件结构与数据结构> 班级: 1723 姓名: 李馨雨 学号:20172328 实验教师:王志强老师 实验日期:2018年10月1 ...

  7. 直立车模控制中三种滤波算法简单分析(清华卓晴)

    摘自:https://mp.weixin.qq.com/s/WbCh0NFAnsf9y2blQenf7g 让我想起余义的一篇文章也是说到平衡车有三种滤波,我想和卓晴说的是一样的吧. https://b ...

  8. 谱估计matlab,利用MATLAB工具箱比较三种谱估计算法

    总第175期2009年第1期 舰船电子工程 Ship Electr onic Engineering V o l.29No.1 96 利用MATLAB工具箱比较三种谱估计算法* 盖明明1)郗海龙2)姜 ...

  9. 【JVM】四种GC算法(分代收集+三种标记算法)

    目录 参考文章 四种GC算法 分代收集算法(理论) 标记清除算法 标记整理算法 标记复制算法 三种算法的优缺点 参考文章 JVM的4种垃圾回收算法.垃圾回收机制与总结_我是guyue,guyue就是我 ...

  10. 基于内容的推荐java代码_三种推荐算法简介:基于用户的协同过滤、基于物品的协同过滤、基于内容的推荐...

    1.推荐算法 1.1.协同过滤 协同过滤是目前应用最广泛的推荐算法,它仅仅通过了解用户与物品之间的关系进行推荐,而根本不会考虑到物品本身的属性. 可分成两类: 1.基于用户(user-based)的协 ...

最新文章

  1. 图解Hbase--大数据平台技术栈07
  2. report service常见处理办法
  3. css阻止input select默认事件
  4. python 列表常用操作(二)
  5. dpkg: 錯誤: 分析檔案 '/var/lib/dpkg/updates/0001' 的第 0 行附近: 欄位名稱 `#padding' 中有換行
  6. interface-C#接口-统一的标准
  7. LeetCode 1222. 可以攻击国王的皇后(set)
  8. 15款值得开发者一试的最新的前端框架
  9. 使用Delphi创建,解析,操纵XML文档
  10. Pyhon 获取文件夹的大小统计
  11. libvlc获取一帧_用VLC 实现获取播放每帧视频的时间(UTC)
  12. Linux之postfix邮件服务器搭建
  13. 浅谈无人值守改造技术在矿山供电系统的应用研究
  14. RPA案例 | 电商使用超自动化平台提升运营精细化
  15. 大数据:一张图让你明白什么是大数据
  16. 2019阿里云峰会·北京 | 十年再出发
  17. C语言编程实例—输出指定图形
  18. 共享栈的简单实现(C语言)
  19. Ubuntu20.04安装visit可视化软件
  20. 燃气热水器出现e4故障是怎么回事?

热门文章

  1. 深度学习二分类问题--IMDB数据集
  2. diy 单片机 自动浇花_基于51单片机的自动浇花装置(很详细)
  3. web页面上联系QQ客服功能实现——一行代码搞定
  4. 百度AI车牌识别测试
  5. gitter 卸载_最佳Gitter渠道:Node.js
  6. HTTPS 自签名证书 实现边下边播 方案
  7. Python - 列表解析式( List_Comprehension)
  8. 【论文翻译】:(arxiv 2022)PS-NeRV: Patch-wise Stylized Neural Representations for Videos
  9. 用python预测超车是否危险_用Python预测泰坦尼克号乘客生存情况
  10. 升级sp1后文档无法编辑