当使用多核调用 Bitbake (
-j 4
) 时,它会失败,退出代码为“1”,并显示以下错误消息:
|警告:Backtrace(BB 生成的脚本): | #1:do_image_wic,/yocto/tmp/work/intel_corei7_64-poky-linux/weston-dev-image/1.0-r0/temp/run.do_image_wic.69326,第 163 行 | #2:主要,/yocto/tmp/work/intel_corei7_64-poky-linux/weston-dev-image/1.0-r0/temp/run.do_image_wic.69326,第 179 行 错误:任务(/yocto/poky/build-weston-64/weston-self-installer/../../../meta-cleanux/meta-builds/recipes-images/images/weston-dev-image. bb:do_image_wic) 失败,退出代码为“1” 注意:任务摘要:尝试了 6603 个任务,其中 6593 个不需要重新运行,1 个失败。
使用了以下 local.conf:
WKS_FILE = "image-installer.wks.in"
IMAGE_FSTYPES:append = " ext4"
IMAGE_TYPEDEP_wic = "ext4"
INITRD_IMAGE_LIVE="core-image-minimal-initramfs"
do_rootfs[depends] += "virtual/kernel:do_deploy"
do_image_wic[depends] += "${INITRD_IMAGE_LIVE}:do_image_complete"
如果您再次运行 bitbake 构建,它就会起作用,并且我们构建成功。
这可能不正确,但我看到有 2 个作业正在运行,
do_image_wic
和 do_image_ext4
。但是,do_image_wic
在 do_image_ext4
之前完成,但具有 do_image_ext4
作为依赖项。
有没有办法运行bitbake来构建具有多核的Yocto并让
do_image_wic
等待do_image_ext4
完成?
如果我们将 yocto 构建配置更改为
-j 1
,则构建不会出现错误。
这个构建顺序问题的解决方案是什么?
使用以下 local.conf 进行修复:
WKS_FILE = "image-installer.wks.in"
IMAGE_FSTYPES:append = " ext4"
IMAGE_TYPEDEP_wic = "ext4"
INITRD_IMAGE_LIVE="core-image-minimal-initramfs"
do_rootfs[depends] += "virtual/kernel:do_deploy"
do_image_wic[depends] += "${INITRD_IMAGE_LIVE}:do_image_complete"
do_image_wic[depends] += "${IMAGE_BASENAME}:do_image_ext4"
缺少 do_image_wic[depends] += "${IMAGE_BASENAME}:do_image_ext4" 在初始化之前等待图像 ext4 完成
do_image_complete()