通常的makefile调试手段学会了后,个人使用了一个调试内核编译过程的小窍门。
因为内核的文件超多,各个makefile又是大家通用的。所以如果在某个makefile中添加打印信息,那估计就是满眼输出,你都不知道看哪里了。
思路
那可以怎么做呢?
我们不是已经看到内核编译的整体架构是
build := -f $(srctree)/scripts/Makefile.build obj
$(Q)$(MAKE) $(build)=$@
好了,我想到的方法就是,在Make某个builtin.o的时候,强行把规则改了,变成使用另一个Makefile.build。这样就可以在自己添加的Makefile.build中,添加调试输出了。
对net/9p/目录调试的例子
下面给个例子,拿net/9p/这个目录举例。
比如我们可以
make net/9p/built-in.o
来编译这个文件。但是可能在编译的时候发现没有达到我们的预期,或者是想看看这个编译的过程都是什么样子的,学习一下kbuild的结构。那么可以做如下改动。
diff --git a/Makefile b/Makefile
index 2203500..dac1344 100644
--- a/Makefile
+++ b/Makefile
@@ -1547,6 +1547,8