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

Yocto中如何让依赖配方获取Poco生成的arc可执行文件?

Yocto环境下解决构建阶段依赖工具传递问题

问题背景

现有application_1.0.0.bb配方依赖poco_1.11.2.bb,配置DEPENDS = "poco"。在application的配置阶段需要使用Poco生成的arc可执行工具,该工具存在于Poco工作目录的package/usr/bin/arc路径,但未同步到application的工作目录。此前编写的poco_%.bbappend尝试复制工具但触发already-stripped错误,添加跳过检查后仍未解决问题。

解决方案

1. 修正Poco的bbappend配置

核心要解决两个问题:将arc工具纳入打包范围、避免重复strip冲突。编辑poco_%.bbappend:

# 把arc工具纳入Poco的开发包(供构建阶段调用)
FILES_${PN}-dev += "${bindir}/arc"

do_install:append() {
    # 仅在文件存在时执行,避免重复操作
    if [ -f ${WORKDIR}/package/usr/bin/arc ]; then
        install -d ${D}${bindir}
        # 跳过strip操作,避免already-stripped错误
        install -m 0755 --strip-program=true ${WORKDIR}/package/usr/bin/arc ${D}${bindir}
    fi
}

# 若仍有strip检查报错,添加跳过规则(优先用--strip-program=true)
INSANE_SKIP:${PN}:append = " already-stripped"

2. 更新application配方的依赖

确保application能获取到Poco的开发包内容,修改application_1.0.0.bb:

DEPENDS = "poco poco-dev"

3. 验证工具同步状态

构建Poco后,检查目标sysroot路径(如tmp/sysroots/<你的机器架构>/usr/bin/arc)是否存在arc文件。确认存在后,重新构建application即可在配置阶段调用该工具。

关键说明

  • Yocto中,构建阶段使用的目标架构工具需纳入-dev包,才会同步到依赖配方的构建sysroot;若为主机架构工具,需封装到xxx-native包并通过DEPENDS += "xxx-native"依赖。
  • 优先用--strip-program=true跳过strip操作,减少INSANE_SKIP的使用,避免破坏Yocto的默认检查机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:40:24