我正在使用buildroot创建一个简单的Linux内核,并添加一个自己完成的小型驱动程序,创建了Config.in
文件和drivername.mk
,以便能够在{{ 1}}成功。
执行make menuconfig
来构建映像时,编译会正确进行,直到驱动程序开始编译为止,它看起来似乎可以正确编译并创建映像了,但是我收到警告说{{1}中的文件不同}被多个包make
所感动。
任何人都可以向我解释一下这个问题,是什么原因造成的?您是否需要更多信息以了解发生了什么?忽略它们是否安全?
预先感谢
答案 0 :(得分:1)
实际上,我搜索了“被多个软件包触摸”,发现http://lists.busybox.net/pipermail/buildroot/2017-October/205602.html,在这里我们发现,如果您不进行并行构建并且不是并行构建,则可以安全地忽略此警告。内核维护者。
也就是说,如果您要提交要包含在Linux内核中的代码,请当个好公民,并确保您确定代码所依赖的所有内容。 (我实际上不是活跃的内核黑客,所以我不知道他们现在正在使用哪种方法。)
基本思想是,编译需要按照逻辑顺序完成的事情有很多步骤。在一个小项目中,我们仅使用已知的依赖项,因为我们也对该依赖项进行了编码。但是,对于一个具有内核大小的项目,您可以保证并非每个人都这样做。他们中的一些人只是在需要某些东西时才指定依赖项,以使它们正确构建-如果默认顺序有效,那么事情可能要花很多年才能有人发现缺少依赖项,从而在他们尝试仅更新依赖项时会感到悲伤。一件事是缺少依赖关系,另一件事因此没有更新。
另一方面,当您并行执行操作时,它将变得更加复杂。现在,您确实需要指定每个依赖项,因为不再存在任何固有的可靠顺序。有些人可能仍会串行构建,而其他人则使用两个处理线程。我将使用8。我曾倾向于30个小组工作,因为它们位于32处理器计算机上,并且在下班时间并不需要所有这些。突然之间的事实是,您通常需要先处理30个目录的目录中的所需文件现在与需要该文件的文件同时进行处理,因为您没有在这30个目录中列出依赖项和所有内容尚未处理且尚未处理的依赖项尚未完成处理。