bsdiff是乙個差異包比較工具,可以用來實現增量更新.
版本:macos 10.12
tar -zxvf bsdiff-4.3.tar.gz
2.進入bsdiff-4.3目錄,在終端下執行構建
cd bsdiff-4.3
make
此時報錯:makefile:13: *** missing separator. stop.
這是makefile檔案的內容的格式不對,修改makefile檔案,修改後的檔案內容如下:
cflags += -o3 -lbz2即.ifndef without_man,.endi語句f前面加tab鍵進行縮排prefix ?= /usr/local
install_program ?= $ -c -s -m 555
install_man ?= $ -c -m 444
all: bsdiff bspatch
bsdiff: bsdiff.c
bspatch: bspatch.c
install
: $ bsdiff bspatch $/bin
.ifndef without_man
$ bsdiff.
1 bspatch.1 $/man/man1
.endif
然後再執行make,此時又報錯:
bspatch.c:39:21: error: unknown type name '接著編譯,結果報錯,找不到bzlib.hu_char
'; did you mean '
char
'?static off_t offtin(u_char *buf)
^~~~~~
char
bspatch.c:
65:8: error: expected ';'
after expression
u_char header[
32],buf[8
]; ^;
bspatch.c:
65:2: error: use of undeclared identifier '
u_char
'; did you mean '
putchar
'?u_char header[
32],buf[8
]; ^~~~~~putchar
: note:
'putchar
'declared here
int putchar(int
); ^bspatch.c:
65:9: error: use of undeclared identifier '
header
'u_char header[
32],buf[8
]; ^bspatch.c:
65:20: error: use of undeclared identifier '
buf'
u_char header[
32],buf[8
]; ^bspatch.c:
66:2: error: use of undeclared identifier '
u_char
'; did you mean '
putchar
'?u_char *old, *new;
^~~~~~putchar
: note:
'putchar
'declared here
int putchar(int
); ^bspatch.c:
66:10: error: use of undeclared identifier '
old'
u_char *old, *new;
^bspatch.c:
66:16: error: use of undeclared identifier '
new'
u_char *old, *new;
^bspatch.c:
93:12: error: use of undeclared identifier '
header
'if (fread(header, 1, 32, f) < 32
) -c -s -m 555install_man ?= $ -c -m 444all: bsdiff bspatch
bsdiff: bsdiff.c
bspatch: bspatch.c
install:
$ bsdiff bspatch $/bin
.ifndef without_man
$ bsdiff.1 bspatch.1 $/man/man1
.endif
tar zxvf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make
sudo make install
然後再編譯bsdiff,出現以下資訊:
修改makefile, 修改後如下:
cc=gcc然後再編譯,安裝就可以了ldflags=cflags += -o3 -lbz2
prefix ?= /usr/local
install_program ?= cp
install_man ?= cp
all: bsdiff bspatch
bsdiff: bsdiff.c
$(cc) bsdiff.c $(cflags) $(ldflags) -o bsdiff
bspatch: bspatch.c
$(cc) bspatch.c $(cflags) $(ldflags) -o bspatch
install
: $ bsdiff bspatch $/bin
$ bsdiff.
1 bspatch.1 $/man/man1
生成差異檔案,常用於服務端生成差異包
bsdiff oldfile newfile patchfile
oldfile: 舊的檔案
newfile:新的檔案
patchfile:生成的差異檔案
合併檔案,常用於客戶端根據差異包合併生成新的檔案
bspatch oldfile newfile2 patchfile
oldfile:舊的檔案
newfile2:生成的新的檔案
patchfile:差異檔案
舉個例子,測試一下使用bsdiff進行增量更新
./bsdiff old.apk new.apk old-new.patch
./bspatch old.apk new2.apk old-new.patch
md5 new.apk
md5 (new.apk) = fc8bdb15f80abef22eb25f9601063cf0
md5 new2.apk
md5 (new2.apk) = fc8bdb15f80abef22eb25f9601063cf0
此時new.apk和new2.apk的md5值是一致的
增量更新 bsdiff工具的安裝和使用
tmp ccqwbjxf.o 在函式 main 中 bsdiff.c text startup 0x2e4 對 bz2 bzwriteopen 未定義的引用 bsdiff.c text startup 0xb29 對 bz2 bzwrite 未定義的引用 bsdiff.c text startup ...
wxWidgets的編譯與使用
今天開始搞wxwidgets,wxwidgets是乙個跨平台的ui類庫,自帶系統的原生介面。開發的時候與mfc挺像的。在windows環境下,必須先安裝mingw 也許cygwin也可以 才能編譯wxwidgets專案。編譯的時候在命令列下進入.wxwidgets 2.8.0 build msw目錄...
ffmpeg的編譯與使用
ffmpeg的編譯與使用 今天我們介紹如何編譯ffmpeg 2.解壓 tar jxvf ffmpeg 0.10.3.tar.bz2 3.configure make make的時間挺長 sudo make install4.編譯完成後,會在主目錄下生成如下幾個可執行檔案 ffmpeg ffmpeg ...