Android增量升级之bsdiff.c:(.text+0x151b):对‘BZ2_bzWriteOpen’未定义的引用的解决

最近在做Android增量升级,在编译bsdiff工具时遇到了下面的问题:
bsdiff.c:(.text.startup+0x2e4):对‘BZ2_bzWriteOpen’未定义的引用
bsdiff.c:(.text.startup+0xb29):对‘BZ2_bzWrite’未定义的引用
bsdiff.c:(.text.startup+0xcbb):对‘BZ2_bzWrite’未定义的引用
bsdiff.c:(.text.startup+0xe67):对‘BZ2_bzWrite’未定义的引用
bsdiff.c:(.text.startup+0xece):对‘BZ2_bzWriteClose’未定义的引用
bsdiff.c:(.text.startup+0xf32):对‘BZ2_bzWriteOpen’未定义的引用
bsdiff.c:(.text.startup+0xf5f):对‘BZ2_bzWrite’未定义的引用
bsdiff.c:(.text.startup+0xf99):对‘BZ2_bzWriteClose’未定义的引用
bsdiff.c:(.text.startup+0xffa):对‘BZ2_bzWriteOpen’未定义的引用
bsdiff.c:(.text.startup+0x1027):对‘BZ2_bzWrite’未定义的引用
bsdiff.c:(.text.startup+0x1061):对‘BZ2_bzWriteClose’未定义的引用
百度好久所有的文章结尾都是:

这里写图片描述
真TM扯淡,天下文章一大抄,没解决的问题也要抄一遍。。。我如果也停在这里会不会把读者气疯(手动滑稽)


从上面的错误可以看出是由于找不到BZ2_bzWriteOpen引起的和java中“cann't find object。。。”差不多;由此可以推测编译不通过,
是由于Makefile的问题造成的,说明其没有关联到bzip2的库文件(作为Linux菜鸟,关于Makefile文件的问题就先不研究了);所以,关键是关联bzip2。
从bzip2的Makefile文件中我们可以看出bzip2将库文件放在了/usr/local/lib目录下,执行文件在/usr/local/bin目录下,这样就简单了,
我们也仿照bzip将编译的bsdiff和bspatch放在/usr/local/bin目录下;这个路径需要root权限,这里先切换到root用户,然后分别执行下面两条命令即可:
gcc bsdiff.c -lbz2 -o /usr/local/bin/bsdiff
gcc bspatch.c -lbz2 -o /usr/local/bin/bspatch
到这里问题完美解决。当然还有更简单的办法,这里自己编译可以解决源和网络的问题(公司网络管理的比较严)。

更简单的使用bsdiff的办法:

http://blog.csdn.net/zouchengxufei/article/details/51700590

关于增量升级见鸿洋大神的blog:

http://blog.csdn.net/lmj623565791/article/details/52761658

关于拆分合并后的md5验证,鸿洋大神用的是mac自带的MD5工具,这里安利一个Windows下的MD5命令行查看工具,使用方法如下:
certutil -hashfile XXXX MD5
效果图:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值