含义警告“文件被多个包触摸”

Lop*_*pan 5 linux driver buildroot

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

当执行make构建映像时,编译会正确进行,直到驱动程序开始编译为止,它看起来似乎可以正确编译并创建映像,但是我收到很多警告,指出其中./lib/gcc/arm-buildroot-linux-uclibcgnueabihf/多个文件涉及多个文件:[u'host-gcc-initial', u'host-gcc-final']

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

预先感谢

小智 3

实际上,在搜索“touched by more one package”时,我发现了http://lists.busybox.net/pipermail/buildroot/2017-October/205602.html,我们发现如果您没有进行并行构建,也不是内核维护者。

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

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

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