2

我可以rm -rf tmp/ sstate-cache/ cache/从头开始运行整个 Yocto 构建,但我宁愿不重建所有内容(尤其是像 Qt 这样的包可能需要一些时间)。

我试过了:

bitbake -c cleansstate linux-iwg15 kernel-module-imx-gpu-viv cryptodev-module

注意:我也尝试过cleanall,但结果相同:

一旦到达以下位置,任何一个内核模块最终都会引发此错误do_compile

  ERROR: Kernel configuration is invalid.
         include/generated/autoconf.h or include/config/auto.conf are missing.
         Run 'make oldconfig && make prepare' on kernel src to fix it.

{build_dir}/tmp/work-shared/{MACHINE}/kernel-build-artifacts文件夹实际上包含include/generated/autoconf.h

我尝试复制 to 的内容,kernel-build-artifacts{build_dir}/tmp/work-shared/{MACHINE}/kernel-source仍然出现错误。

linux-iwg15BitBake 食谱在这里

在重建 Linux 内核模块之前,我还有什么需要清理的吗?

在干净的构建之后,我确实注意到kernel-build-artifacts包含kernelscripts文件夹(以及sourceto的符号链接..\kernel-source),我不记得在运行后尝试重建时在那里bitbake -c cleansstate

4

1 回答 1

2

在重建 Linux 内核模块之前,我还有什么需要清理的吗?

是的。bitbake -c cleansstate make-mod-scripts

任何内核模块配方都将包含inherit module. 这引用了 meta/classes/module.bbclass,其中包含inherit module-base. 这引用了 meta/classes/module-base.bbclass,其中包含:

# We do the dependency this way because the output is not preserved
# in sstate, so we must force do_compile to run (once).
do_configure[depends] += "make-mod-scripts:do_compile"

make-mod-scripts配方(在meta /recipes-kernel/make-mod-scripts/make-mod-scripts.bb)将文件添加到{build_dir}/tmp/work-shared/{MACHINE}/kernel-build -artifacts目录。(这被引用为STAGING_KERNEL_BUILDDIRconf/bitbake.conf中设置。)

不幸的是,内核配方将删除目录中的所有内容STAGING_KERNEL_BUILDDIR,因为该目录已添加到meta/classes/kernel.bbclassdo_shared_workdir[cleandirs]中的变量中。这最终会删除make-mod-scripts放在那里的文件。

于 2021-03-23T02:39:49.813 回答