微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Buildroot 不会重新构建修改过的文件

如何解决Buildroot 不会重新构建修改过的文件

我正在使用外部树构建进行 linux 内核驱动程序开发。我创建了一个 Config.in 和一个 kernel_driver.mk,一切似乎都运行良好,但仍然有编译错误。 我一遍又一遍地重复“make driver-dirclean / make driver”。 但是,我的印象(现在我验证了这个事实),一旦我可以成功正确构建一次,那么 BR 就不会再次重建文件,即使我故意在这文件中引入错误!!! 输出显示: CC [M] /home/adva/work/sfpnid-drv/buildroot/output/build/hal-1.0.0/kernel/helper.o LD [M] /home/adva/work/sfpnid-drv/buildroot/output/build/hal-1.0.0/kernel/spidev.o 构建模块,第 2 阶段。 MODPOST 1 模块 CC [M] /home/adva/work/sfpnid-drv/buildroot/output/build/hal-1.0.0/kernel/spidev.mod.o LD [M] /home/adva/work/sfpnid-drv/buildroot/output/build/hal-1.0.0/kernel/spidev.ko

编译永远不会失败! 是否存在缓存问题? rsync 效果

谢谢, 雅克

解决方法

最后我找到了问题的根源。 当我使用树外构建时,我遇到了“清理”问题。我意识到依赖关系是在 BR/output/build/.. 环境中解决的,而我的文件是在树外编辑的。 所以会发生什么,一旦它成功构建了 1 次,那么 .o 就会出现在 BR 中。依赖关系得到满足,“make -rebuild 只会重新链接旧的 .o. 我需要执行“make -dirclean”,以便同步新文件(有错误)。

至少我是这么理解的。 所以对我来说,这有点解决了。事实上,BR 是一个真正的集成工具,而不是一个开发环境。所以这种行为是可以理解的。

雅克

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。