Yocto编译驱动报错/bin/sh: 1: bc: not found,添加依赖未解决求助
Yocto驱动编译报错
bc: not found 排查解决方案 前置说明
IMAGE_INSTALL_append = " bc" 配置完全不影响编译阶段依赖,该配置仅将bc安装到最终输出的目标镜像根文件系统中,可直接删除该冗余配置
排查步骤
- 验证DEPENDS配置是否生效
执行以下命令打印驱动配方的完整环境变量,确认DEPENDS中是否确实包含bc和bc-native:
如果你是通过bbappend文件修改的依赖,需确认bbappend的文件命名、层级路径和配方优先级配置正确,未被其他配置覆盖。bitbake <你的驱动配方名> -e | grep "^DEPENDS" - 验证bc-native是否正常部署到构建环境
先手动执行bc-native的安装任务:
检查构建目录下的bitbake bc-native -c installtmp/hosttools/路径中是否存在bc可执行文件,同时确认你的项目没有自定义HOSTTOOLS变量屏蔽系统或原生构建的bc工具。 - 修复编译脚本硬编码路径问题
大部分此类问题是驱动的Makefile硬编码了/usr/bin/bc的绝对路径调用,导致无法识别sysroot下的bc-native工具,可通过两种方式修复:- 给驱动Makefile打补丁,将bc调用替换为
${STAGING_BINDIR_NATIVE}/bc - 在驱动配方中显式将原生工具路径加入编译阶段的PATH优先级:
EXTRA_OEMAKE:append = " PATH=${STAGING_BINDIR_NATIVE}:$PATH" - 给驱动Makefile打补丁,将bc调用替换为
- 修复编译任务环境变量丢失问题
如果驱动配方重写了do_compile任务,没有继承Yocto默认的编译环境变量,需要手动在任务中导出PATH:do_compile() { export PATH="${STAGING_BINDIR_NATIVE}:${PATH}" oe_runmake }
临时验证方案
如果上述排查后仍定位不到问题,可手动将bc-native生成的可执行文件复制到构建环境的默认PATH路径下,确认是否是bc部署问题导致的故障。
内容的提问来源于stack exchange,提问作者tom654321
相关产品推荐
相关产品推荐

