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

Buildroot编译scikit-learn遇BLAS/LAPACK缺失及test_program找不到求助

Buildroot编译scikit-learn/scipy相关问题解答

问题背景

在Buildroot中添加scikit-learn包时,编译阶段发现依赖scipy,于是在python-scipy.mk中添加以下host-python-scipy依赖项:

HOST_PYTHON_SCIPY_DEPENDENCIES += \
        host-python-numpy \
        host-python-pythran \
        zlib \
        lapack \
        python-numpy \
        python-pybind

重新编译scikit-learn时出现numpy.distutils.system_info.NotFoundError: No BLAS/LAPACK libraries found错误,日志显示无法找到armpl_lp64_mp、mkl_rt、openblas等库;后续操作后又遇到FileNotFoundError: [Errno 2] No such file or directory: './test_program'错误,报错指向package/pkg-generic.mk。


一、Buildroot对MKL库的支持及添加方法

  • Buildroot默认不提供Intel MKL库:MKL是闭源商业库,仅针对x86架构做深度优化,多数嵌入式架构(如ARM)无法直接适配,因此Buildroot官方未集成该库。
  • 替代解决方案:使用Buildroot自带的开源BLAS/LAPACK实现OpenBLAS,适配绝大多数架构:
    1. 启用OpenBLAS:运行make menuconfig,进入Libraries > Math,勾选openblas选项。
    2. 修正依赖配置:修改python-scipy.mk中的HOST_PYTHON_SCIPY_DEPENDENCIES,将lapack替换为host-openblas和openblas;同时在python-numpy.mk中添加DEPENDENCIES += openblas,确保numpy关联OpenBLAS。
    3. 重新编译:执行make host-python-scipy clean && make,触发依赖重新编译。

二、pkg-generic.mk的作用

  • pkg-generic.mk是Buildroot的核心通用包编译框架,所有遵循标准流程编译的包都会引用该文件。
  • 它定义了包编译的全生命周期标准步骤:下载、解压、配置、编译、安装、测试等通用逻辑,负责处理环境变量传递、目录创建、错误检查、权限管理等基础编译工作。
  • 报错指向该文件,说明测试阶段(由pkg-generic.mk定义的通用测试流程)执行时,找不到指定的测试程序文件。

三、解决test_program找不到且不跳过测试的方法

  • 核心原因:交叉编译环境下,测试脚本生成的测试程序路径异常,或交叉编译的测试程序无法直接在主机(x86架构)运行(目标为ARM等架构)。
  • 具体解决步骤:
    1. 核对测试程序生成路径:查看编译日志中的测试程序生成命令,确认./test_program是否应在当前编译目录生成。若路径错误,可在包的.mk文件中添加MAKE_FLAGS或CONFIGURE_FLAGS指定正确输出路径。
    2. 用QEMU模拟目标架构运行测试:在Buildroot配置中启用BR2_PACKAGE_HOST_QEMU,然后在包的.mk文件中添加TEST_ENV += QEMU=$(HOST_DIR)/usr/bin/qemu-arm(根据目标架构调整为qemu-aarch64等),让测试阶段通过QEMU模拟执行交叉编译的测试程序。
    3. 确保依赖与编译参数完整:确认pythran、pybind、OpenBLAS等依赖已正确安装,且编译时的CFLAGS、LDFLAGS正确传递库路径,例如添加LDFLAGS += -L$(STAGING_DIR)/usr/lib到包的编译配置中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:31:01