我building a custom Ubuntu kernel并修改了其中一个源文件。当我发出构建命令时:
NOEXTRAS=1 skipabi=true skipmodule=true fakeroot debian/rules binary-insp8600
它重建debs,但没有重建修改过的源文件。
怎么了?每次修改源文件时,是否必须进行完全干净的重建?
这没有任何意义。
修改的文件为./init/main.c
。
作为备注,binary-insp8600是我为Inspiron 8600笔记本电脑创建的自定义风格。
答案 0 :(得分:2)
debian/rules
不是内核Makefile。它无法知道您编辑的文件是最终内核的依赖项,因为这些依赖项位于真正的Makefile中。
实际上,我希望debian/rules
build
目标(实际进行编译的目标)仅依赖于它在完成构建后创建的“标志”文件。如果是这种情况,一个简单的解决方法是删除该“标志”文件;然后它将再次编译所有内容(通过调用内核的Makefile
,它将知道如何进行部分重建。当然,假设build
目标不会尝试整洁并执行{{{ 1}}或同等的......)
(我没有看到你正在使用的软件包的make clean
,所以我可能错了,但至少它是一个开始。)
答案 1 :(得分:0)
如果Makefile中的依赖项是正确的,则不必进行干净的构建。
您更改的文件是头文件吗?如果是,则运行makedepend以自动添加头文件依赖项:)
如果它不是头文件,那么它们确实应该是Makefile中的依赖项,如果它是编译的一部分,请进行搜索并确保您使用的目标取决于您要编译的模块