You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Yocto至Sumo版本后Multilib引发do_image_wic构建错误

我在Yocto 2.5 Sumo版本上折腾Multilib配置的时候,刚好碰到过和你一模一样的问题——为了给genericx86架构弄64位grub-efi,加了配置之后do_image_wic死活找不到那个libtool脚本,手动复制完还出别的错。其实根源是交叉编译工具链的路径没被构建系统正确识别,下面是我亲测有效的解决步骤:

1. 补全Multilib环境变量配置

你的local.conf基础配置没问题,但缺少了工具链路径的关键声明,Yocto在Multilib模式下需要明确知道去哪里找64位交叉工具。把下面的内容添加到local.conf里:

require conf/multilib.conf
MULTILIBS = "multilib:lib64"
DEFAULTTUNE_virtclass-multilib-lib64 = "x86-64"
IMAGE_INSTALL_append = " lib64-grub-efi"
# 新增工具链路径配置,指定交叉脚本位置
TARGET_VENDOR = "-poky"
TARGET_SYS_append_lib64 = "mlib64"
TOOLCHAIN_PATH_lib64 = "${STAGING_DIR_TARGET}/usr/bin/crossscripts"

这个配置会直接告诉构建系统去你提到的那个路径找x86_64-pokymllib64-linux-libtool这类工具脚本。

2. 清理并重建工具链(别手动复制文件!)

手动复制文件是饮鸩止渴——Yocto的构建系统依赖自动生成的依赖链和链接,手动拷贝会打破这些关联,后续肯定出更多问题。执行以下命令彻底清理旧工具链并重新生成:

bitbake -c cleansstate meta-toolchain
bitbake meta-toolchain

这一步会重新生成完整的Multilib交叉工具链,所有必要的脚本、链接都会乖乖待在正确的位置。

3. 确保grub-efi配方支持Multilib

有些版本的grub-efi配方默认没适配Multilib的lib64变体,你可以给它加个.bbappend文件来补全配置:
在你的自定义layer里创建meta-yourlayer/recipes-bsp/grub/grub-efi_%.bbappend,写入:

COMPATIBLE_HOST_lib64 = "x86_64.*-linux"
EXTRA_OECONF_lib64 = "--target=x86_64-pokymllib64-linux"

这会明确告诉grub-efi配方,在lib64的Multilib模式下要针对x86_64目标编译。

4. 重新构建镜像

完成上面的配置后,清理之前的镜像构建状态,重新执行构建:

bitbake -c cleansstate [你的镜像名称]
bitbake [你的镜像名称]
bitbake [你的镜像名称] -c do_image_wic

这样一套操作下来,应该就能解决找不到libtool脚本的问题,也不会再出现手动复制带来的后续错误了。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:27:21