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

Yocto构建间歇性失败:dwarfsrcfiles不存在问题求助

Yocto构建报错:do_package阶段找不到dwarfsrcfiles的解决方案

问题背景

使用Yocto Dunfell版本时,某应用出现间歇性构建失败,报错如下:

ERROR: my-app-1.0.52-213f116 do_package: Fatal errors occurred in subprocesses:
[Errno 2] No such file or directory: 'dwarfsrcfiles': 'dwarfsrcfiles': Traceback (most recent call last):
  File "/var/lib/jenkins/workspace/la_meta-my-layer_check-build/my-yocto-sdk/poky/meta/lib/oe/utils.py", line 280, in run
    ret = self._target(*self._args, **self._kwargs)
  File "/var/lib/jenkins/workspace/la_meta-my-layer_check-build/my-yocto-sdk/poky/meta/classes/package.bbclass", line 405, in splitdebuginfo
    sources = source_info(file, d)
  File "/var/lib/jenkins/workspace/la_meta-my-layer_check-build/my-yocto-sdk/poky/meta/classes/package.bbclass", line 353, in source_info
    output = subprocess.check_output(cmd, universal_newlines=True, stderr=subprocess.STDOUT)
  File "/usr/lib/python3.7/subprocess.py", line 395, in check_output
    **kwargs).stdout
  File "/usr/lib/python3.7/subprocess.py", line 472, in run
    with Popen(*popenargs, **kwargs) as process:
  File "/usr/lib/python3.7/subprocess.py", line 775, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.7/subprocess.py", line 1522, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'dwarfsrcfiles': 'dwarfsrcfiles'

已尝试的操作:

  • 添加PARALLEL_MAKE = "",未解决问题
  • 设置PARALLEL_MAKE = "-j 20",导致每次构建必败

补充信息:

  • 配方未修改打包步骤
  • dwarfsrcfiles实际已构建完成,失败后可正常运行
  • 升级至Kirkstone版本后问题仍存在

解决方案

1. 显式添加构建依赖

问题根源是do_package阶段未正确等待dwarfsrcfiles-native完成安装,在配方中添加以下内容,强制依赖关系:

DEPENDS += "dwarfsrcfiles-native"
do_package[depends] += "dwarfsrcfiles-native:do_populate_sysroot"

该配置确保do_package必须在dwarfsrcfiles-native的do_populate_sysroot步骤完成后执行,保证工具已被安装到构建环境的PATH中。

2. 确保PATH包含工具路径

如果依赖关系已存在但环境变量未正确设置,可在配方中显式将dwarfsrcfiles所在目录加入do_package阶段的PATH:

do_package[env] += "PATH=${STAGING_BINDIR_NATIVE}:${PATH}"

STAGING_BINDIR_NATIVE是Yocto中存放原生工具的目录,dwarfsrcfiles默认安装在此处。

3. 限制打包阶段的并行度

PARALLEL_MAKE控制的是编译阶段的并行,打包阶段的并行由阶段级配置控制。可在配方中强制打包阶段单线程执行:

do_package[parallel] = "1"

验证

添加上述任意配置后,清理应用的构建状态(bitbake -c clean my-app),重新执行构建,观察是否仍出现找不到dwarfsrcfiles的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 06:48:15