一悔捶、準備c庫
1铃慷、下載bsdiff庫,里面包括bsdiff.c和bspatch.c蜕该,前者用于生產(chǎn)差分包犁柜,后者用于合并差分包的铐尚。
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源碼進行編譯拌倍,也可以采用直接安裝系統(tǒng)環(huán)境的方式:
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梗顺、編譯成功
生產(chǎn)可執(zhí)行文件bsdiff和bspatch
四、運行
1车摄、bsdiff
./bsdiff 源文件 目標文件 patch
會將源文件和目標文件進行比較寺谤,生成差分包patch
2仑鸥、bspatch
./bspatch 源文件 目標文件 patch
會使用patch和源文件進行合成,生成目標文件
參考文檔:
http://www.reibang.com/p/0b9ae76b356a
http://www.reibang.com/p/4ca7933185f7
下載兩個工具的源碼变屁。