在将Linux内核源代码树分成两个相对较远的对象时
提交时,前两等分步骤通常会改变很多
内核源代码,因此无论是否运行make distclean,都不会造成太大的影响
不同之处。但是,随着二等分范围的缩小,源文件会越来越少
在每个步骤都进行了更改,因此清除源代码树会删除很多
不需要重建的*.o文件。

由于make通过比较对象文件来推断需要重建的对象文件,
他们相关的源文件的最后修改时间,我认为
在每一等分步骤之后不必清洁树,但是我确实
无论如何,作为预防措施,我遇到了一个很长的时间
二等分过程最终使我陷入了与工作无关的“不良” promise
与有问题的错误。

具体来说,这是我在第一个二等分尝试中使用的步骤
(这使我进入了错误的提交):

cp /boot/config-`uname -r` .config
make oldconfig
make && sudo make modules_install && sudo make install
# reboot
# Then I repeat the following steps until the bisection ends.
# test the kernel
git bisect {good,bad}
make && sudo make modules_install && sudo make install
# reboot

我使用以下过程再次将其一分为二,并且能够成功
到达错误的提交:

make distclean
cp /boot/config-`uname -r` .config
make oldconfig
make && sudo make modules_install && sudo make install
# reboot
# test the kernel
git bisect {good,bad}
# Then I repeat the steps above until the bisection ends.

由于我不太了解kenrel构建系统的内部,因此
如果有人可以指出我可以避免的某种方式,那将是很好的
在每个平分步骤之后清洗并重建整个内核,因为那样
这将为我节省大量的构建时间,并会缩短对分过程
相当。

最佳答案


the man

和一个快速的实验
$ stat -c%y bar.txt
2013-05-11 22:58:46.499826200 -0500

$ git checkout HEAD〜1
HEAD现在位于e7b9f1c ...首先

$ stat -c%y bar.txt
2013-05-11 22:58:52.583836900 -0500

如您所见,执行checkout会更改
文件,然后迫使它使用make重新编译。所以答案
是,没有必要清理树,因为必要的文件将是
重新编译。

关于linux - 在每一等分步骤之后,是否有必要清理Linux内核源代码树?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16503870/

10-13 08:35