BitBake Recipe添加文件失败:目标文件找不到问题排查求助
解决BitBake Recipe无法找到本地文件的问题
看起来你遇到的核心问题是BitBake没有把你指定的本地文件复制到工作目录(WORKDIR),导致do_install阶段找不到文件。下面是具体的问题分析和修复方案:
问题根源
你的recipe缺少了inherit base这一行。base类是BitBake的基础类之一,它负责处理SRC_URI中定义的本地file://资源,自动将这些文件复制到构建的工作目录(${WORKDIR})中。没有继承这个类,BitBake只会解析SRC_URI但不会执行文件复制操作,自然在do_install时找不到文件。
修复后的完整Recipe
SUMMARY = "Horus Vizentec" DESCRIPTION = "Horus Vizentec" LICENSE = "CLOSED" # 继承base类,处理本地文件复制 inherit base FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:" SRC_URI += " file://horus-1.3.0.jar \ file://application.properties" do_install(){ # 先创建目标目录,避免因目录不存在导致install失败 install -d ${D}/home/root # 安装jar文件,若需要可执行权限保留0755,否则用0644即可 install -m 0755 ${WORKDIR}/horus-1.3.0.jar ${D}/home/root # 配置文件使用0644权限更合理(只读,所有者可读写) install -m 0644 ${WORKDIR}/application.properties ${D}/home/root }
额外优化说明
- 目录创建:添加
install -d ${D}/home/root确保目标目录存在,有些Yocto构建环境默认不会包含/home/root目录,提前创建可以避免安装失败。 - 权限调整:
.properties作为配置文件,使用0644权限更符合Linux文件权限规范;.jar文件如果不需要直接执行(比如通过Java命令调用),也可以改为0644。
验证方法
如果修复后仍有问题,可以进入构建工作目录检查文件是否存在:
cd /home/bernardo/yocto/genericx86-64-rocko-18.0.0/build/tmp/work/core2-64-poky-linux/horus/1.3-r0/ ls -la
如果文件已经出现在这里,说明base类已经完成了文件复制,do_install就能正常工作了。
内容的提问来源于stack exchange,提问作者Bernardo Rodrigues
相关产品推荐
相关产品推荐

