解释如何通过隐式规则生成设备树文件,以及验证过程。对Linux内核的编译系统不太熟悉,特别是Kbuild的隐式规则。
首先,问题核心是:
使用命令生成tlimx8-evm.dtb时,为什么相关的Makefile中没有显式的规则,但编译却能成功。想知道背后的机制,以及如何验证这一点。
已经执行了source环境变量和make命令,并且删除了现有的dtb文件后重新编译,发现确实生成了文件,但Makefile中没有对应的条目。这引出了隐式规则的概念。需要解释Kbuild系统如何处理这种情况,特别是隐式规则如何自动触发。
接下来,我在scripts/Makefile.lib中寻找隐式规则,但直接grep可能没找到,因为规则可能使用了变量或更复杂的路径定义。需要说明预处理步骤和实际调用的dtc命令,以及如何通过V=1参数查看详细输出,确认隐式规则的存在。
然后,对比了有无V=1参数的区别,这显示了详细的编译步骤,证明隐式规则的存在。需要总结这些步骤,并解释每个步骤的作用,特别是预处理和dtc编译的过程。
最后,可能仍然困惑为什么Makefile中没有显式规则,但编译却能成功,需要强调隐式规则的工作原理,以及为何这种设计能简化Makefile的维护,同时允许灵活编译。
为什么没有 Makefile 规则却能生成 .dtb 文件?
1. 问题背景
• 我的操作:
执行了 source /home/tronlong/SDK/environment-setup-aarch64-poky-linux(设置交叉编译环境)和 make freescale/tlimx8-evm.dtb(编译设备树文件)。
• 我的疑问:
明明 arch/arm64/boot/dts/freescale/Makefile 中没有

最低0.47元/天 解锁文章
1585

被折叠的 条评论
为什么被折叠?



