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

Yocto项目qemux86-64架构下openblas.bb的do_compile任务报错退出码1

报错原因
  • 核心是交叉编译场景下的测试执行冲突:OpenBLAS默认编译流程会在库编译完成后自动构建并运行测试用例,你当前是Yocto交叉编译环境,编译出的sblat1等测试用例是qemux86-64目标架构的二进制文件,无法直接在构建主机上运行。shell提示的./sblat1: not found不是文件真的不存在,是主机内核无法识别目标架构的可执行文件格式,执行失败后返回的误导性提示。
  • 你当前的openblas.bb配方没有传递禁用测试的参数给OpenBLAS的Makefile,导致默认触发了测试执行步骤,最终编译失败。
修复方案

只需要修改openblas.bb的do_compile步骤,添加OpenBLAS原生支持的禁用测试参数NO_TESTS=1即可,修改后的do_compile代码如下:

do_compile () {
        oe_runmake HOSTCC="${BUILD_CC}"                                         \
                                CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS} ${@map_extra_options(d.getVar('TARGET_ARCH'), d)}" \
                CF="${TARGET_PREFIX}gfortran ${TOOLCHAIN_OPTIONS} ${@map_extra_options(d.getVar('TARGET_ARCH'), d)}" \
                                PREFIX=${exec_prefix} \
                                CROSS_SUFFIX=${HOST_PREFIX} \
                                BINARY='${@map_bits(d.getVar('TARGET_ARCH'), d)}' \
                                TARGET='${@map_arch(d.getVar('TARGET_ARCH'), d)}' \
                                NO_TESTS=1
}

(可选优化)如果你的qemux86-64需要更高的性能,可以调整map_arch函数中x86_64对应的目标架构,默认返回的ATOM是针对低功耗凌动架构的优化,通用x86_64场景可以换成HASWELL或者更通用的x86_64,不调整也可以正常运行。

修改完成后重新执行openblas的构建任务即可正常编译通过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:54:03