是否有必要在每个平分步骤之后清理Linux内核源代码树?

是否有必要在每个平分步骤之后清理Linux内核源代码树?,linux,git,linux-kernel,Linux,Git,Linux Kernel,将Linux内核源代码树平分为两个相对较远的 在提交时,前几个对分步骤通常会对 内核源代码,所以无论是否运行makedistclean,都不会产生很大影响 差别。但是,随着二分法范围的缩小,源文件会越来越少 在每一步都会更改,因此清理源代码树将删除大量 *.o不需要重建的文件 因为make通过比较对象文件的 最后一次修改相关源文件的时间,我假设 这是没有必要的清洁树后,每一个二分法步骤,但我这样做 不管怎样,在我遇到一个长时间的 平分过程最终让我陷入了一个“糟糕”的承诺,而这与我无关 有问题的b

将Linux内核源代码树平分为两个相对较远的 在提交时,前几个对分步骤通常会对 内核源代码,所以无论是否运行
makedistclean
,都不会产生很大影响 差别。但是,随着二分法范围的缩小,源文件会越来越少 在每一步都会更改,因此清理源代码树将删除大量
*.o
不需要重建的文件

因为
make
通过比较对象文件的 最后一次修改相关源文件的时间,我假设 这是没有必要的清洁树后,每一个二分法步骤,但我这样做 不管怎样,在我遇到一个长时间的 平分过程最终让我陷入了一个“糟糕”的承诺,而这与我无关 有问题的bug

为了使其具体化,以下是我在第一次尝试平分时使用的步骤 (这让我犯了错误):

cp/boot/config-`uname-r`.config
制作oldconfig
生成和sudo生成模块\u安装和sudo生成安装
#重新启动
#然后我重复以下步骤,直到二等分结束。
#测试内核
git对分{好,坏}
生成和sudo生成模块\u安装和sudo生成安装
#重新启动
我使用以下程序再次平分,并且能够成功地 到达错误提交:

makedistclean
cp/boot/config-`uname-r`.config
制作oldconfig
生成和sudo生成模块\u安装和sudo生成安装
#重新启动
#测试内核
git对分{好,坏}
#然后我重复上面的步骤,直到二等分结束。
因为我不太了解kenrel构建系统的内部结构,所以 如果有人能告诉我一些我可以避免的方法,那就太好了 在每个二等分步骤之后清理和重建整个内核,因为 将节省我大量的构建时间,并将缩短平分过程 相当大。

来自

make程序使用makefile数据库和上次修改时间 来决定哪些文件需要更新

还有一个快速的实验

$ stat -c%y bar.txt 2013-05-11 22:58:46.499826200 -0500 $ git checkout HEAD~1 HEAD is now at e7b9f1c... first $ stat -c%y bar.txt 2013-05-11 22:58:52.583836900 -0500 $stat-c%y bar.txt 2013-05-11 22:58:46.499826200 -0500 $git签出头~1 头现在在e7b9f1c。。。第一 $stat-c%y bar.txt 2013-05-11 22:58:52.583836900 -0500 如您所见,执行
签出
会更改 文件,并反过来强制使用
make
重新编译它。那么答案是什么呢 如果为否,则不必清理树,因为必要的文件将被删除
重新编译。

谢谢史蒂文的回答。我知道
make
会检查修改时间,而且
git checkout
会更改修改时间。但我的问题更多的是关于内核构建系统是否没有让事情变得简单,因为我会遇到不同的对分结果,这取决于我是否在每个步骤后运行
make distclean
。我用关于我在对分过程中遇到的问题的更明确的信息更新了这个问题,以及我使用的确切命令。我希望这会有所帮助。