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

构建Yocto镜像时DirectFB2无法找到Fluxcomp-native的问题

树莓派0 W构建含DirectFB2的Yocto镜像问题解决方案

问题总结

  • 构建依赖Fluxcomp工具(仅用于构建阶段,无需包含在部署镜像中)
  • 执行bitbake fluxcomp-native时报错:install: cannot stat 'build/tmp/work/x86_64-linux/fluxcomp-native/1.0+gitAUTOINC+10ad2ebc78-r0/build/fluxcomp-native': No such file or directory,实际目录仅存在fluxcomp二进制文件
  • 生成的工具被命名为fluxcomp-native而非期望的fluxcomp,且bitbake build-sysroots不再将其部署到build/tmp/sysroots/x86_64/usr/bin
  • 执行bitbake directfb2时触发与fluxcomp-native构建相同的错误

核心修复:修改fluxcomp.bb配方

1. 修正安装逻辑中的文件名引用

原生配方使用${PN}作为安装文件名,在native构建时${PN}会被替换为fluxcomp-native,但实际编译生成的二进制是fluxcomp,直接指定文件名即可解决找不到文件的问题:

do_install() {
    echo "DO_INSTALL FLUXCOMP TO ${D}${bindir}"
    install -d ${D}${bindir}
    # 直接使用编译生成的真实文件名fluxcomp,而非变量${PN}
    install -m 0755 ${B}/fluxcomp ${D}${bindir}/
    # 如需统一命名为fluxcomp(包括native版本),可直接指定安装后的文件名
    # install -m 0755 ${B}/fluxcomp ${D}${bindir}/fluxcomp
}

2. 简化Autotools配置流程

原do_configure中手动修改configure文件、指定交叉编译参数的方式易引发路径混乱,改用OE原生Autotools类处理,仅保留必要的autoreconf操作:

inherit autotools pkgconfig

# 仅在configure.in存在时转换为configure.ac,并生成configure脚本
do_configure_prepend() {
    if [ -f ${S}/configure.in ]; then
        mv ${S}/configure.in ${S}/configure.ac
    fi
    cd ${S}
    autoreconf -i -f
}

移除原自定义的do_configure函数,让OE自动处理交叉编译、前缀路径等配置。

3. 清理冗余编译逻辑

原do_compile中手动复制文件到${B}的操作完全多余,Autotools构建会自动在正确目录生成二进制文件,简化为:

do_compile() {
    cd ${S}
    make -j ${@oe.utils.cpu_count()}
}

4. 明确Native版本的文件部署路径

添加Native版本的文件定义,确保工具被安装到OE指定的native staging目录,让directfb2能正常找到:

# 指定native版本的安装文件
FILES_${PN}-native = "${bindir}/fluxcomp"

辅助调整:修正directfb2.bb配方

1. 修正交叉编译架构

树莓派0 W为ARM架构,原cross-file指定--cpu=x86_64错误,需改为ARM架构参数:

do_configure() {
    export PATH="${STAGING_BINDIR_NATIVE}:${PATH}"
    # 适配树莓派0 W的ARM架构
    meson env2mfile --cross -o ${WORKDIR}/my.meson.x86target.cross --cpu=arm --cpu-family=arm --system=linux
    meson ${EXTRA_OEMESON} ${S} ${B}
}

2. 确保Fluxcomp在PATH中

在configure阶段将native工具目录加入环境变量PATH,避免meson找不到fluxcomp:

export PATH="${STAGING_BINDIR_NATIVE}:${PATH}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:02:54