前言
最近我一直在折腾鸿蒙(HarmonyOS)开发,总想着能不能让它也“AI”起来。ONNX(Open Neural Network Exchange)作为模型部署的“万金油”,我自然想把它搬到鸿蒙上试试。
然而,理想很丰满,现实……你懂的。一番搜索下来,发现并没有现成的库可以直接用。没办法,只能撸起袖子自己动手——编译源码。
这个过程嘛,坑不多也不少,刚好够我喝一壶的。
所以,我决定把这次“填坑”之旅详细记录下来。这篇博客,与其说是教程,不如说是我个人的探索笔记。我将主要聚焦在两个最关键的步骤:
环境准备: 唠唠如何搭建鸿蒙的开发环境,特别是那个让人又爱又恨的 NDK 环境配置。
编译实录: 分享我是如何使用鸿蒙的工具链,一步步把 ONNX Runtime 的源码编译成鸿蒙能用的动态库(.so 文件)。
写下这篇,一是给自己做个备忘,免得下次再踩同样的坑;二也是希望能抛砖引玉,和同样在鸿蒙AI道路上探索的朋友们交流一下。如果我的这点经验能帮到你,那这趟折腾就值了!
好了,让我们开始吧。
一、准备工作
在编译之前还有一些准备工作:
- 下载 鸿蒙辅助编译库
git clone https://gitee.com/zhong-luping/tpc_c_cplusplus.git
git checkout -b fix_other origin/fix_other - 下载 鸿蒙SDK 文章中使用的是linux的SDK
二、使用鸿蒙交叉编译工具链编译
1.编译前的准备
- 修改tpc_c_cplusplus项目下的thirdparty/onnxruntime/HPKBUILD文件
- 将pkgver修改为需要的onnx版本 如v1.22.2
- 修改架构archs 如arm64-v8a
- source中的版本需要和pkgver保持一致
- 如果是手动下载的,需要把downloadpackage设置为false
- 设置命令行环境变量
- 配置SDK路径
export OHOS_SDK=鸿蒙SDK路径/sdk/default/openharmony - 配置cmake路径
export PATH=鸿蒙SDK路径/sdk/default/openharmony/native/build-tools/cmake/bin:$PATH
- 配置SDK路径
- 如果内存小于64G推荐把tpc_c_cplusplus项目下的lycium/build.sh中的export MAKE=“make -j32” 和 export Ninja=“ninja -j32” 修改为 -j8
2.编译
cd lycium
./build.sh onnxruntime
脚本后面的参数为对应的第三方库名
三、使用
编译完成后会在lycium目录下生成一个usr文件夹,这里是默认的安装路径,可以在这里找到include和lib文件夹,库就在lib文件夹下面。
- 复制动态库到 项目根目录/项目主目录/libs/arm64-v8a 文件夹下
- 在 项目根目录/项目主目录/src/main/cpp 文件夹下创建一个 onnxruntime 文件夹,把onnxruntime头文件复制到这里
- 修改 cpp 文件夹下的 CMakeLists.txt
target_include_directories(项目名 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/onnxruntime/include)target_link_libraries(项目名 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libonnxruntime.so.1)
1725

被折叠的 条评论
为什么被折叠?



