Android编译文件没有更新到.so库文件

背景:

    最近在Android系统下编译修改的.c补丁文件,使用命令单独编译文件,结果没有更新到.so库文件,我加的打印始终没有出来,查看有编译出.o和.so文件,查看时间戳.o文件比.so文件晚2秒,这个结果就有点诡异了。

分析:

    1、我在想可能是系统时间有问题,那么我把系统时间网络同步,然后make clean后重新编译,结果无改善;

    2、怀疑是文件的时间戳混乱导致编译出现问题,那么通过touch命令把每个文件全部更新为最新,结果还是无改善;

    3、难道我弄错.so文件了,也许是链接到另外的库去了?接下来验证。

验证:

    通过grep命令在.so文件里面搜索.c文件失败,查看得知.so文件不带符号表,所以搜索失败,接下来就是去找编译出来带符号表的.so文件,通过objdump查看确实有符号表,然后通过grep搜索编译出来的所有.so文件库,结果论证了我改的.c文件根本就不在我认为的那个.so库中,其实是另外一个.so库中,查看另外一个.so库,时间戳确实是比.o文件晚1秒,把库通过adb推荐板子,重启后搜索我添加的打印成功出现了。

总结:

    这次被经验主义坑了自己一把,别人说是这个库就坚信不疑了,自己加的打印没有出来首先去怀疑是.so没有编译成功,导致后面一直在查时间戳的问题。这个让我联想到了之前调试一块样机板,硬件给过来说内存是1GB,然后在烧写系统时提示大文件内存越界很是奇怪,怎么会越界呢,难道内存配置有问题,然后就跑得很偏了。结果后来自己无意间看nand flash容量时看了下DDR内存容量,心中一万只马儿崩腾而过,明明就是512MB,难怪会出现奇怪的问题。结果硬件解释说做了两种容量的板子,拿错了,好吧,这种坑以后别再来了,生命不止折腾不起啊!

    总结一点,不要太相信队友和硬件,还是眼见为实,遇到问题时敢于怀疑是环境外部问题,而不是首先指向自己的代码,虽然代码平时bug无穷尽。

扫描二维码关注公众号,回复: 2688025 查看本文章

猜你喜欢

转载自blog.csdn.net/TSZ0000/article/details/81105068
今日推荐