含义警告"File is touched by more than one package"

Meaning warning "File is touched by more than one package"

我正在使用 buildroot 创建一个简单的 linux 内核,我正在添加一个我自己完成的小驱动程序,我创建了 Config.in 文件和 drivername.mk 以便能够select make menuconfig 中的驱动程序成功。

当执行 make 构建图像时,编译会正确进行,直到我的驱动程序开始编译,它看起来编译和创建图像都是正确的,但我收到大量警告说 [= 中的不同文件15=] 被多个包裹触及:[u'host-gcc-initial', u'host-gcc-final']

任何人都可以向我解释一下这个问题以及导致它的原因是什么?您是否需要更多信息来了解发生了什么?忽略它们安全吗?

预先致谢

实际上,在 'touched by more than one package' 上进行搜索,我找到了 http://lists.busybox.net/pipermail/buildroot/2017-October/205602.html,我们发现如果您不进行并行构建并且不是内核,则可以安全地忽略此警告维护者。

就是说,如果您要提交代码以包含在 Linux 内核中,请做一个好公民,并确保您确定代码所依赖的所有内容。 (我实际上不是一个活跃的内核黑客,所以我不知道他们现在使用什么方法。)

基本思想是编译的东西有一堆步骤,需要按照逻辑顺序完成。在一个小项目中,我们只是使用我们知道要放入的依赖项,因为我们也在该依赖项中进行了编码。但是对于内核大小的项目,你可以保证不是每个人都这样做。他们中的一些人只是指定依赖项,如果他们需要正确构建东西 - 如果默认顺序有效,事情可能会持续数年才能有人发现缺少依赖项,导致他们在尝试更新时感到悲伤一件事是缺少依赖项,另一件事是代码没有得到更新。

另一方面,当你并行处理事情时,它会变得复杂得多。现在您真的需要指定每个依赖项,因为不再有任何固有的可靠顺序。有些人可能仍会连续构建,而其他人则使用两个处理线程。我将使用 8。我曾在倾向于执行 30 的组中工作,因为他们在 32 处理器机器上,并且在下班时间并不真正需要所有这些。突然间,您需要的文件来自通常在您的目录之前处理 30 个目录的目录,现在与您需要它的文件同时得到处理,因为您没有列出依赖项以及这 30 个目录中的所有内容't already been processed 和 isn't being processed 具有尚未完成其处理的依赖项。