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

为何Yocto将Recipe源码文件复制到WORKDIR而非S?如何处理?

Yocto Kirkstone中Hello World Recipe文件位置问题解析

现象原因

当创建无远程源码包/SCM依赖的简单Hello World Recipe时,hello.c被放到WORKDIR而非默认的S目录,核心原因是:

  • S变量的默认值${WORKDIR}/${BPN}-${PV}是为有远程源码包或SCM同步源码的场景设计的。如果Recipe没有通过SRC_URI引入远程包或版本控制代码,构建系统不会自动创建这个默认的S目录结构。
  • 对于Recipe中附带的本地文件(如直接放在files目录下的hello.c),构建系统默认会将其复制到WORKDIR,而非不存在的默认S路径。

正确处理方式

不需要手动在do_config任务中复制文件,有两种简洁的解决方案:

  • 显式指定S为WORKDIR:这是单文件小项目最常用的方式,直接在Recipe中添加:
    S = "${WORKDIR}"
    
    这样后续构建任务(如do_compile)会默认从S(即WORKDIR)读取源码文件,符合预期。
  • 适配默认S目录结构:如果希望遵循标准的S目录规范,可通过SRC_URI配置文件解压路径,同时确保S目录存在:
    1. 在Recipe中设置S = "${WORKDIR}/${BPN}-${PV}"
    2. 配置SRC_URI时指定解压目标:
      SRC_URI = "file://hello.c;destdir=${BPN}-${PV}"
      
      这样构建系统会将hello.c复制到默认的S目录中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 01:39:57