专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
嵌入式
嵌入式linux用xdelta实现程序的远程升级
2019-07-12 15:09
发布
生成海报
站内文章
/
嵌入式Linux
12115
0
985
公司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板,给源文件打补丁,生成的目标文件跟电脑端的目标文件一致,完成。
Ta的文章
更多
>>
linux下嵌入式QT开发环境的搭建
0 个评论
嵌入式linux用xdelta实现程序的远程升级
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮