嵌入式linux用xdelta实现程序的远程升级
来源:互联网 发布:国际顶级域名数据库 编辑:程序博客网 时间:2024/06/06 15:43
公司linux嵌入式产品,使用的3G网络,需要远程升级二进制软件,大概十几兆,不算大也不算小,如果每次都完全替换的话,在产品开发初期估计也是不小的流量,所以开始考虑是不是能通过打补丁的方法实现远程升级二级制文件。
在网上搜索后发现确实有这种方法,使用的一个工具名叫:xdelta
先说下配置:
1、电脑端系统:ubuntu14.04
2、嵌入式硬件:BBB板
3、嵌入式系统:TI SDK-08编译出来的....
好像有两个版本,xdelta和xdelta3,后者功能更多。 直接安装xdelta3吧,虽然用不到其他强大功能,以后省的升级了。
下面详述操作过程:
1、从https://github.com/jmacd/xdelta-gpl下载源码。
2、先在电脑端安装xdelta3,头一次接触这种安装方式,之前直接./configure然后make,这个源码需要通过
automake工具链来安装(参考安装方法:http://blog.csdn.net/maray/article/details/6676131)。也就是
下面步骤中用到的一些命令和库,automake工具链的安装可以百度。
1)、进入源码目录,执行aclocal生成aclocal.m4文件
2)、执行autoconf生成configure文件
3)、执行autoheader
4)、执行automake --add-missing,不用理会输出的warning
5)、分别执行: touch NEWS;touch README;touch AUTHORS;touch ChangeLog; 生成几个文件。
6)、再执行一次automake --add-missing,照样不用理会输出的warning
7)、现在,可以执行./configure了,生成Makefile文件
8)、执行make
9)、执行sudo make install
按照步骤一步步走,就会成功安装xdelta3了。
3、安装好xdelta3后,先使用一个二进制程序测试一下是否真的好使,需要用到下面两条命令:
1)制作补丁文件: xdelta3 -e -s(Sorce file) (Destination file) test.patch
2)打补丁: xdelta3 -d -s (Source file) test.patch (Destination file)
实际使用了一个13M左右的文件,制作好的补丁文件只有450K左右,当然这应该是跟据文件改动的
多少来变化的,不过这相对于源文件来说,肯定小很多了,这样升级的话会节省很多流量。
4、既然好用,下面就应该编译到嵌入式linux系统中了,继续往下。。。
5、依然进入之前的xdelta3源码目录,先运行make distclean ,删除之前的编译文件。
6、执行./configure --help 查看帮助,根据以往经验,主要看下面部分:
7、执行./configure --prefix=/home/InstallDir CC=arm-linux-gnueabihf-gcc
CXX=arm-linux-gnueabihf-g++ CPP=arm-linux-gnueabihf-cpp,结果报错:
根据提示,执行./configure --prefix=/home/InstallDir --host=arm-linux-gnueabihf 成功,生成了Makefile文件。
(一开始在--host=后面多了个空格,结果找不到编译器,各种摸不着头脑...)
8、执行make;make install; 完成后在/home/InstallDir目录得到两个文件夹: bin share
9、将得到的文件夹bin中的文件复制到BBB板/usr/local/bin中,share中的文件复制到BBB板/usr/local/share中。
可能需要赋予执行权限,试着执行./xdelta3,发现如下错误输出:
貌似是缺少lzma库,百度一下,是一个解压缩的软件,装。。。
1、从https://tukaani.org/xz/下载xz的源码。
2、进入源码目录,看到也是automake工具链,不过貌似前面的步骤都已经做过了,直接:
./configure --prefix=/home/InstallDir --host=arm-linux-gnueabihf
然后make;makeinstall;
3、将生成的安装文件分别复制到BBB板/usr/bin下相应的目录中。
再次执行./xdelta3 -V出现下面输出:
搞定。。。。
将之前电脑端测试的源文件和生成的补丁复制到BBB板,给源文件打补丁,生成的目标文件跟电脑端的目标文件一致,完成。
- 嵌入式linux用xdelta实现程序的远程升级
- 利用SD卡实现嵌入式Linux系统的自动升级
- 嵌入式Linux系统的GDB远程调试的实现
- 嵌入式Linux的GDB远程调试的实现
- 嵌入式Linux的GDB远程调试的实现
- 嵌入式Linux的GDB远程调试的实现
- 嵌入式Linux的GDB远程调试的实现
- 嵌入式Linux系统的GDB远程调试的实现
- 嵌入式Linux的GDB远程调试的实现
- 嵌入式Linux系统的GDB远程调试的实现
- 嵌入式Linux的GDB远程调试的实现
- 嵌入式Linux的GDB远程调试的实现
- 嵌入式目标板程序的压缩(3)--实现目标板解压升级程序功能
- 单片机程序远程升级的设计
- 嵌入式应用一例--借助卫星广播信号实现程序升级
- Qt Creator远程调试嵌入式ARM开发板上的Linux程序
- 实现程序的热升级
- 实现程序的热升级
- 每天一个Linux命令(37):date命令
- 从51到stm32开发入门,真干货
- js小知识
- 每天一个Linux命令(38):cal命令
- Python基础——数据类型与变量
- 嵌入式linux用xdelta实现程序的远程升级
- Sketch Tutorial
- 搭建邮件服务器之SMTP发送服务器(二)
- 21、不一样的C++系列--数组操作符的重载
- 使用cookie实现记住用户名的功能
- 每天一个Linux命令(39):grep命令
- web.xml详解
- 直播系统如何设置多码率输出
- FlytestingToolkit工具派送,懒人的测试思考