一、准备c库
1、下载bsdiff库,里面包括bsdiff.c和bspatch.c,前者用于生产差分包,后者用于合并差分包的。
2、下载bzip2库,里面包括的大量文件,只有.c和.h文件是有需要的,其他都可以删掉;
二、集成C库
1、解压bsdiff
2、cd到bsdiff下ls,跟刚才解压看到的一样:bsdiff.1 bsdiff.c bspatch.1 bspatch.c Makefile
3、直接在该目录下运行make命令,结果:
Makefile:13: *** missing separator. Stop.
这时候需要修改Makefile
4.修改MakeFile:vim Makefile,使用tab增加第13行和15行缩进

5、再make:bsdiff.c:33:19: fatal error: bzlib.h: No such file or directory
说缺少bzip库,bzip是压缩工具,可以去下载bzip源码进行编译,也可以采用直接安装系统环境的方式:
Ubuntu: apt install libbz2-dev
Centos: yum -y install bzip2-devel.x86_64
Mac: brew install bzip2
三、下载bzip源码编译
1、将bzip2解压后保留.c和.h文件,bzip2目录置于bsdiff目录下
2、修改bsdiff.c和bspatch.c,增加下面代码
#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"
3、编译成功
生产可执行文件bsdiff和bspatch
四、运行
1、bsdiff
./bsdiff 源文件 目标文件 patch
会将源文件和目标文件进行比较,生成差分包patch
2、bspatch
./bspatch 源文件 目标文件 patch
会使用patch和源文件进行合成,生成目标文件
参考文档:
https://www.jianshu.com/p/0b9ae76b356a
https://www.jianshu.com/p/4ca7933185f7
下载两个工具的源码。
网友评论