当前位置: 首页 > news >正文

Ubuntu 安装与使用C++ onnxruntime库

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、Ubuntu中安装onnxruntime
    • 1、一些依赖
    • 2、onnx安装
  • 二、一些报错及解决
  • 三、onnxruntime推理


前言

一、Ubuntu中安装onnxruntime

1、一些依赖

一键安装ROS(不安装ROS可能会缺很多库,容易报错):

wget http://fishros.com/install -O fishros && . fishros

onnxruntime的一些依赖项:

$ sudo apt-get update
$ sudo apt-get install -y libprotobuf-dev protobuf-compiler

2、onnx安装

$ git clone https://github.com/microsoft/onnxruntime
$ cd onnxruntime
$ git checkout v1.19.0
$ ./build.sh --config Release --build_shared_lib --parallel --allow_running_as_root
$ cd onnxruntime/build/Linux/Release/
$ sudo make install

二、一些报错及解决

其他同学遇到的问题参考链接

问题1:cmake版本问题

CMake 3.26 or higher is required.  You are running version 3.16.3

Ubuntu 20.04升级cmake
使用cmake编译的时候提示:CMake 3.20 or higher is required. You are running version 3.16.3

所以需要升级cmake版本。

访问cmake官网:https://cmake.org/files/v3.22/,下载3.22.1版本(很多版本,不低于V3.20的都行)

$ wget https://cmake.org/files/v3.30/cmake-3.30.0.tar.gz
$ tar xzf cmake-3.30.0.tar.gz
$ cd cmake-3.22.1
$ ./configure
$ make
$ sudo make install
$ cmake --version

问题2:

make[2]: *** [CMakeFiles/gsl-populate.dir/build.make:100:gsl-populate-prefix/src/gsl-populate-stamp/gsl-populate-download] 错误 1
make[1]: *** [CMakeFiles/Makefile2:83:CMakeFiles/gsl-populate.dir/all] 错误 2
make: *** [Makefile:91:all] 错误 2
CMake Error at /usr/local/share/cmake-3.30/Modules/FetchContent.cmake:1918 (message):Build step for gsl failed: 2
Call Stack (most recent call first):/usr/local/share/cmake-3.30/Modules/FetchContent.cmake:1609 (__FetchContent_populateSubbuild)/usr/local/share/cmake-3.30/Modules/FetchContent.cmake:2145:EVAL:2 (__FetchContent_doPopulation)/usr/local/share/cmake-3.30/Modules/FetchContent.cmake:2145 (cmake_language)/usr/local/share/cmake-3.30/Modules/FetchContent.cmake:1978:EVAL:1 (__FetchContent_Populate)/usr/local/share/cmake-3.30/Modules/FetchContent.cmake:1978 (cmake_language)external/helper_functions.cmake:139 (FetchContent_Populate)external/onnxruntime_external_deps.cmake:400 (onnxruntime_fetchcontent_makeavailable)CMakeLists.txt:598 (include)-- Configuring incomplete, errors occurred!
Traceback (most recent call last):

该错误表明在编译onnxruntime时,CMake在获取GSL(Guidelines Support Library)依赖时失败。以下是解决方案和注意事项:

解决方案
‌手动安装GSL‌,下载GSL源码并编译安装:

git clone https://github.com/microsoft/GSL.git
cd GSL && mkdir build && cd build
cmake .. -DGSL_TEST=OFF && make -j$(nproc) && sudo make install

在onnxruntime编译时通过-Donnxruntime_USE_SYSTEM_GSL=ON指定系统GSL路径

‌若使用build.sh脚本,添加参数:
./build.sh --cmake_extra_defines onnxruntime_USE_SYSTEM_GSL=ON
或直接修改CMakeLists.txt,将onnxruntime_USE_SYSTEM_GSL设为ON

问题3:

make[2]: *** [CMakeFiles/eigen-populate.dir/build.make:100:eigen-populate-prefix/src/eigen-populate-stamp/eigen-populate-download] 错误 1
make[1]: *** [CMakeFiles/Makefile2:83:CMakeFiles/eigen-populate.dir/all] 错误 2
make: *** [Makefile:91:all] 错误 2
CMake Error at /usr/local/share/cmake-3.30/Modules/FetchContent.cmake:1918 (message):Build step for eigen failed: 2
Call Stack (most recent call first):/usr/local/share/cmake-3.30/Modules/FetchContent.cmake:1609 (__FetchContent_populateSubbuild)/usr/local/share/cmake-3.30/Modules/FetchContent.cmake:2145:EVAL:2 (__FetchContent_doPopulation)/usr/local/share/cmake-3.30/Modules/FetchContent.cmake:2145 (cmake_language)/usr/local/share/cmake-3.30/Modules/FetchContent.cmake:1978:EVAL:1 (__FetchContent_Populate)/usr/local/share/cmake-3.30/Modules/FetchContent.cmake:1978 (cmake_language)external/eigen.cmake:12 (FetchContent_Populate)external/onnxruntime_external_deps.cmake:500 (include)CMakeLists.txt:598 (include)-- Configuring incomplete, errors occurred!

解决方法:
手动执行下载脚本
进入/media/zzz/lwl/hmpose/onnxruntime/build/Linux/Release/_deps/eigen-subbuild/eigen-populate-prefix/src/目录

cd eigen-subbuild/eigen-populate-prefix/src/
wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz
tar -xzf eigen-3.4.0.tar.gz
echo "Success" > eigen-populate-stamp/eigen-populate-download

修改CMake缓存参数
编辑CMakeCache.txt,添加:

eigen_SOURCE_DIR:PATH=/path/to/local/eigen
eigen_POPULATE:BOOL=OFF

三、onnxruntime推理

C++ onnxruntime API参考:ONNX Runtime: Ort Namespace Reference

http://www.dtcms.com/a/395571.html

相关文章:

  • Ubuntu 部署 Zabbix 6.0 LTS 监控平台
  • 基于springboot家政、上门服务、Java源码系统功能结构
  • 从 “纸笔清单” 到全栈引擎:数据填报与类 Excel 控件如何重塑企业效率曲线
  • FPGA学习笔记——图像处理之饱和度调节(RGB)
  • MySQL 读写分离详解与 MyCat 实战部署
  • SEU-project1项目调试过程记录
  • STM32H743-结合CubeMX新建HAL库MDK工程
  • [国奖版本!更新完毕]2025华为杯E题数学建模研赛E题研究生数学建模思路代码文章成品:高速列车轴承智能故障诊断问题
  • 【一天一个Web3概念】区块链中的双花问题:概念、案例与防范措施
  • Java 大视界 -- Java 大数据机器学习模型在金融衍生品定价与风险管理中的应用(415)
  • STC15W4K56S4 单片机 PWM 功能详解与配置指南
  • 秋招冲刺!AI面试如何破解企业招聘难题?
  • MySQL脚本转换为StarRocks完整指南
  • Mysql常见sql语句优化
  • CPU性能优化指南:让处理器火力全开
  • 火山PromptPilot ,支持api sdk构建AI应用开发
  • 使用Rax构建小程序项目踩坑记录
  • Vue自定义滚动条的实现
  • 【鸿蒙面试题-7】鸿蒙与web混合开发
  • 基于Java语言的搭子小程序_搭子APP平台
  • implements Serializable作用和原理
  • valkey9.0之HFE
  • 基于C#的湿度上位机实现方案
  • 汽车电子模块缩写
  • 随机裁剪 vs. 中心裁剪:深度学习中图像预处理的核心技术解析
  • 四大金刚之计算机网络
  • 划重点|云栖大会「AI 原生应用架构论坛」看点梳理
  • Spark源码中的AQS思想
  • lora微调大语言模型(qwen1.5-chat)
  • 数藏APP如何选择高防IP