news 2026/4/23 8:32:05

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/4/8 13:07:48

图片二维码生成器是什么?它有哪些独特的功能与优势?

图片二维码生成器是将图像内容转化为二维码的工具,方便用户扫描获取信息。其独特功能主要包括支持各种媒体格式如图片、音视频和文档,用户可以随时修改内容而不需要重新生成二维码。二维码的长期有效性使其适合用于宣传、教学和商业展示等多种场景。此外…

作者头像 李华
网站建设 2026/4/23 8:31:04

详解redis(7):数据结构List

一、List 是什么?Redis List 的本质有序的字符串序列,按插入顺序排列,两端操作快你可以把它理解成:双端队列支持:左边进 / 左边出右边进 / 右边出二、Redis 早期 List 的两种底层结构Redis 的哲学:小数据用…

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

格恩朗金属管浮子流量计 本土精造 稳控流体计量

2019年,大连格恩朗扎根滨城,承袭本土工业测控领域的技术积淀,专注打造适配北方复杂工况的金属管浮子流量计。以“稳定耐用、精准计量”为核心,遵循国家工业计量标准,覆盖化工生产、环保处理、能源输送等多场景&#xf…

作者头像 李华
网站建设 2026/4/23 8:30:45

2026年私域的八大挑战及发展方向

2026年,私域运营进入“合规化、专业化、价值化”的深水区,全域融合与AI技术的深度渗透,既放大了传统运营痛点,也催生了新的增长机遇。基于行业调研与新规动态,私域领域的八大挑战愈发清晰,而对应的破局方向…

作者头像 李华
网站建设 2026/4/18 13:54:23

Postman持久化保存/设置断言详解

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 postman持久化保存 1、点击postman的Collections页签,点击 New Collection创建(可以当成项 目并重命名) 2、新增后&…

作者头像 李华