news 2026/3/22 17:05:25

HarmonyOS 中 MindSpore Lite 源码编译转换工具环境与步骤

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HarmonyOS 中 MindSpore Lite 源码编译转换工具环境与步骤

网罗开发(小红书、快手、视频号同名)

大家好,我是展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。

图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG

我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。

展菲:您的前沿技术领航员
👋 大家好,我是展菲!
📱 全网搜索“展菲”,即可纵览我在各大平台的知识足迹。
📣 公众号“Swift社区”,每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
💬 微信端添加好友“fzhanfei”,与我直接交流,不管是项目瓶颈的求助,还是行业趋势的探讨,随时畅所欲言。
📅 最新动态:2025 年 3 月 17 日
快来加入技术社区,一起挖掘技术的无限潜能,携手迈向数字化新征程!


文章目录

    • 前言
    • 为什么需要从源码编译
    • 环境要求详解
      • 操作系统要求
      • GCC 编译器要求
      • CMake 构建工具要求
      • Git 版本控制工具要求
      • 其他依赖工具
    • 编译步骤详解
      • 第一步:获取源码
      • 第二步:进入编译目录
      • 第三步:配置 PyTorch 转换支持(可选)
      • 第四步:执行编译
      • 第五步:查找编译产物
    • 实际应用场景
      • 场景一:转换 TensorFlow 模型
      • 场景二:转换 ONNX 模型
      • 场景三:转换 PyTorch 模型
      • 场景四:自定义转换选项
    • 常见问题排查
      • 问题一:编译时提示缺少依赖库
      • 问题二:CMake 版本不够
      • 问题三:GCC 版本不够
      • 问题四:PyTorch 库找不到
      • 问题五:编译时间过长
    • 总结

前言

最近在做鸿蒙 AI 应用开发的时候,需要用到 MindSpore Lite 的模型转换工具。官方提供的预编译版本虽然方便,但有时候我们需要自定义一些功能,或者想要了解底层的实现细节,这时候就需要从源码编译了。

刚开始编译的时候,遇到了不少问题:环境配置不对、依赖版本不匹配、编译参数设置错误等等。折腾了好几天才把环境配好,成功编译出转换工具。今天我们就来聊聊 MindSpore Lite 源码编译的环境要求和详细步骤,以及在实际开发中可能遇到的问题和解决方案。

为什么需要从源码编译

在实际开发中,我们通常有几种方式获取 MindSpore Lite 的转换工具:

使用预编译版本:这是最简单的方式,直接下载官方提供的预编译工具,解压就能用。但这种方式有个问题,就是功能是固定的,无法自定义。

从源码编译:虽然过程复杂一些,但可以自定义功能,比如添加新的算子支持、修改转换逻辑等。而且从源码编译还能帮助我们更好地理解 MindSpore Lite 的工作原理。

什么时候需要从源码编译

  1. 需要支持新的模型格式或算子
  2. 需要修改转换逻辑
  3. 需要调试转换过程中的问题
  4. 想要了解底层实现细节

环境要求详解

编译 MindSpore Lite 转换工具对环境有一定要求,让我们详细看看每个要求:

操作系统要求

推荐系统:Linux x86_64(推荐 Ubuntu 18.04.02LTS)

MindSpore Lite 的编译主要在 Linux 环境下进行,虽然理论上其他 Linux 发行版也可以,但 Ubuntu 18.04.02LTS 是官方测试最多的版本,兼容性最好。

为什么选择 Ubuntu 18.04.02LTS

  1. 官方主要在这个版本上测试
  2. 依赖库的版本比较稳定
  3. 社区支持好,遇到问题容易找到解决方案

如果你用的是其他 Linux 发行版,比如 CentOS、Debian 等,理论上也可以,但可能需要调整一些依赖库的安装方式。

检查系统版本

# 查看系统版本cat/etc/os-release# 查看系统架构uname-m

确保是 x86_64 架构,如果是 ARM 架构,编译过程可能会有所不同。

GCC 编译器要求

要求:GCC ≥ 7.3.0

GCC 是编译 C/C++ 代码的编译器,MindSpore Lite 需要较新版本的 GCC 来支持 C++17 特性。

检查 GCC 版本

gcc --version

如果版本不够,需要升级 GCC

在 Ubuntu 上,可以通过以下方式安装新版本的 GCC:

# 添加 PPA 源sudoadd-apt-repository ppa:ubuntu-toolchain-r/testsudoapt-getupdate# 安装 GCC 7 或更高版本sudoapt-getinstallgcc-7 g++-7# 设置默认版本(可选)sudoupdate-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-760sudoupdate-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-760

验证安装

gcc --version g++ --version

CMake 构建工具要求

要求:CMake ≥ 3.18.3

CMake 是跨平台的构建工具,MindSpore Lite 使用 CMake 来管理编译过程。

检查 CMake 版本

cmake --version

如果版本不够,需要升级 CMake

在 Ubuntu 上,可以通过以下方式安装新版本的 CMake:

# 下载 CMakewgethttps://github.com/Kitware/CMake/releases/download/v3.18.3/cmake-3.18.3-Linux-x86_64.tar.gz# 解压tar-xzf cmake-3.18.3-Linux-x86_64.tar.gz# 移动到系统目录sudomvcmake-3.18.3-Linux-x86_64 /opt/cmake# 添加到 PATH(添加到 ~/.bashrc 或 ~/.zshrc)exportPATH=/opt/cmake/bin:$PATH# 重新加载配置source~/.bashrc

验证安装

cmake --version

Git 版本控制工具要求

要求:Git ≥ 2.28.0

Git 用来获取 MindSpore Lite 的源码。

检查 Git 版本

git--version

如果版本不够,需要升级 Git

在 Ubuntu 上,可以通过以下方式安装新版本的 Git:

# 添加 PPA 源sudoadd-apt-repository ppa:git-core/ppasudoapt-getupdate# 安装最新版本的 Gitsudoapt-getinstallgit

其他依赖工具

除了上面这些主要工具,还需要一些其他的依赖:

基础开发工具

sudoapt-getupdatesudoapt-getinstall-y build-essentialsudoapt-getinstall-y libssl-devsudoapt-getinstall-y libffi-devsudoapt-getinstall-y python3-devsudoapt-getinstall-y python3-pip

这些工具在编译过程中可能会用到,建议提前安装好。

编译步骤详解

环境配置好后,就可以开始编译了。让我们一步步来看:

第一步:获取源码

首先需要获取 MindSpore Lite 的源码:

# 克隆 MindSpore 仓库gitclone https://gitee.com/mindspore/mindspore.git# 进入源码目录cdmindspore

如果网络不好,也可以使用镜像源:

# 使用 Gitee 镜像gitclone https://gitee.com/mindspore/mindspore.git

选择合适的分支

# 查看所有分支gitbranch -a# 切换到稳定版本(根据实际需求选择)gitcheckout r2.0# 或其他稳定版本

建议使用稳定版本,而不是最新的开发版本,因为开发版本可能不够稳定。

第二步:进入编译目录

获取源码后,需要进入编译目录:

cdmindspore/mindspore/lite

这个目录包含了 MindSpore Lite 的源码和编译脚本。

第三步:配置 PyTorch 转换支持(可选)

如果你需要支持 PyTorch 模型的转换,需要先配置相关环境变量:

设置环境变量

# 启用 PyTorch 模型转换exportMSLITE_ENABLE_CONVERT_PYTORCH_MODEL=on# 设置 PyTorch 库路径(根据实际安装路径调整)exportLIB_TORCH_PATH=/path/to/libtorch# 设置库搜索路径exportLD_LIBRARY_PATH=$LIB_TORCH_PATH/lib:$LD_LIBRARY_PATH

下载 PyTorch C++ 库

如果还没有安装 PyTorch C++ 库,需要先下载:

# 创建目录mkdir-p ~/libtorchcd~/libtorch# 下载 PyTorch C++ 库(根据你的系统选择对应版本)wgethttps://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-2.0.0%2Bcpu.zip# 解压unziplibtorch-cxx11-abi-shared-with-deps-2.0.0+cpu.zip# 设置环境变量exportLIB_TORCH_PATH=~/libtorch/libtorchexportLD_LIBRARY_PATH=$LIB_TORCH_PATH/lib:$LD_LIBRARY_PATH

验证环境变量

echo$MSLITE_ENABLE_CONVERT_PYTORCH_MODELecho$LIB_TORCH_PATHecho$LD_LIBRARY_PATH

确保环境变量设置正确,否则编译时可能会报错。

第四步:执行编译

环境配置好后,就可以执行编译了:

# 执行编译脚本bashbuild.sh -I x86_64 -j8

编译参数说明

  • -I x86_64:指定目标平台为 x86_64
  • -j 8:使用 8 个并行任务编译,可以根据你的 CPU 核心数调整

如果你的 CPU 核心数较多,可以增加-j后面的数字,比如-j 16,这样可以加快编译速度。

编译过程

编译过程可能需要一些时间,具体取决于你的机器配置。编译过程中会输出很多日志,如果遇到错误,可以根据错误信息来排查问题。

常见编译错误

  1. 依赖库缺失:如果提示缺少某个库,需要安装对应的开发包
  2. 版本不匹配:如果提示版本不对,需要升级或降级相关工具
  3. 内存不足:如果编译过程中内存不足,可以减少-j参数的值

第五步:查找编译产物

编译完成后,编译产物会在output/目录下:

# 查看编译产物ls-la output/

转换工具位置

转换工具位于output/tools/converter/converter/目录下:

# 查看转换工具ls-la output/tools/converter/converter/# 测试转换工具./output/tools/converter/converter/converter_lite --help

如果能看到帮助信息,说明编译成功了。

实际应用场景

让我们看看几个实际应用场景,了解如何在实际项目中使用编译好的转换工具:

场景一:转换 TensorFlow 模型

如果你有一个 TensorFlow 模型需要转换为 MindSpore Lite 格式:

# 使用转换工具转换模型./output/tools/converter/converter/converter_lite\--fmk=TFLITE\--modelFile=model.tflite\--outputFile=model

这个命令会将 TensorFlow Lite 模型转换为 MindSpore Lite 格式。

场景二:转换 ONNX 模型

如果你有一个 ONNX 模型:

./output/tools/converter/converter/converter_lite\--fmk=ONNX\--modelFile=model.onnx\--outputFile=model

场景三:转换 PyTorch 模型

如果你配置了 PyTorch 支持,可以转换 PyTorch 模型:

./output/tools/converter/converter/converter_lite\--fmk=PYTORCH\--modelFile=model.pt\--outputFile=model

场景四:自定义转换选项

转换工具还支持很多自定义选项:

./output/tools/converter/converter/converter_lite\--fmk=TFLITE\--modelFile=model.tflite\--outputFile=model\--configFile=config.txt\--weightFile=weight.bin

可以通过配置文件来设置更多的转换选项。

常见问题排查

在实际编译过程中,可能会遇到各种问题,让我们看看常见的问题和解决方案:

问题一:编译时提示缺少依赖库

错误信息error: cannot find -lxxx

解决方案

# 安装缺失的开发库sudoapt-getinstalllibxxx-dev# 或者通过包管理器搜索apt-cachesearch xxx

问题二:CMake 版本不够

错误信息CMake 3.18.3 or higher is required

解决方案:按照前面的步骤升级 CMake 到 3.18.3 或更高版本。

问题三:GCC 版本不够

错误信息error: 'xxx' is not a member of 'std'

解决方案:升级 GCC 到 7.3.0 或更高版本。

问题四:PyTorch 库找不到

错误信息error: cannot find libtorch

解决方案

  1. 检查LIB_TORCH_PATH环境变量是否正确设置
  2. 检查LD_LIBRARY_PATH是否包含 PyTorch 库路径
  3. 确认 PyTorch 库文件确实存在

问题五:编译时间过长

解决方案

  1. 增加并行编译任务数:-j 16或更高
  2. 使用更快的机器或云服务器
  3. 只编译需要的组件,而不是全部编译

总结

编译 MindSpore Lite 转换工具虽然过程复杂一些,但掌握了方法后其实也不难。关键是要把环境配置好,然后按照步骤一步步来。

关键点总结:

  1. 环境要求要满足:Linux x86_64、GCC ≥ 7.3.0、CMake ≥ 3.18.3、Git ≥ 2.28.0
  2. 源码获取要正确:使用官方仓库或镜像,选择稳定版本
  3. 环境变量要设置:如果需要 PyTorch 支持,要正确设置相关环境变量
  4. 编译参数要合理:根据机器配置调整并行任务数
  5. 问题排查要耐心:遇到错误要仔细看日志,按错误信息排查

最佳实践:

  1. 使用 Ubuntu 18.04.02LTS,兼容性最好
  2. 提前安装所有依赖,避免编译过程中中断
  3. 使用稳定版本的源码,而不是最新的开发版本
  4. 编译前检查所有环境变量是否正确设置
  5. 保存编译日志,方便后续排查问题
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/14 1:57:52

深度测评专科生必用8款AI论文工具:开题报告与文献综述全解析

深度测评专科生必用8款AI论文工具:开题报告与文献综述全解析 专科生论文写作的痛点与AI工具的机遇 随着高校教育的不断发展,专科生在学术研究和论文写作中的需求日益增长。然而,面对开题报告、文献综述等复杂任务,许多学生常常感到…

作者头像 李华
网站建设 2026/3/15 10:20:25

气体涡轮流量计 本土精造 精准守护气体管控

2019年,大连格恩朗扎根滨城,承袭本土工业测控技术积淀,深耕气体计量领域,打造适配北方严寒、工业复杂环境的气体涡轮流量计。以“稳定精准、耐用易管”为核心,严守国家工业计量标准,覆盖燃气供应、工业气体…

作者头像 李华
网站建设 2026/3/20 8:08:33

用AI制作表格实战:20个高频ChatExcel指令词,告别低效Excel操作

随着AI技术的不断成熟,越来越多职场人开始思考一个现实问题:怎么用AI制作表格,才能真正省时间、少加班? 最近,ChatExcel上线了全新的AI做表功能,精准击中了打工人在表格制作和数据处理上的痛点。 那么问题…

作者头像 李华
网站建设 2026/3/20 8:08:31

力扣122 买卖股票的最佳时机II java实现

122.买卖股票的最佳时机II给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。然而,你可以在 同一天 多次买卖该股票,但要确…

作者头像 李华
网站建设 2026/3/20 8:08:30

互联网医院系统|互联网医院成品|互联网医院开发

互联网医院系统的兴起,正悄然改变传统医疗服务的边界与模式。通过技术赋能,医疗资源得以跨越时空限制,为患者提供更高效、便捷的诊疗体验。这一系统不仅整合了在线问诊、电子处方、药品配送、慢病管理等核心功能,还通过数据互联打…

作者头像 李华
网站建设 2026/3/20 8:08:28

APS概念-新订单开始日期延迟

一、核心概念解读新订单开始日期延迟是 APS 系统中为新插入的订单预留缓冲时间的参数,它会在订单正式排程前,提前一段固定的小时数来完成文书、采购、准备等前置工作,避免因紧急插单导致的生产混乱。二、关键作用与场景应对紧急插单当客户订单…

作者头像 李华