Ubuntu18.04 ONNXRuntime C++ API编译

  • Post author:
  • Post category:其他


最近在学习c++方面的部署应用,想着先拿熟悉的ONNX下手试试,却发现需要编译C++版本的ONNXRuntime。几经波折,在经历了一上午的编译后,终于成功了。写下这篇文章记录我的编译过程。

1.基础编译环境要求

这点是比较坑的,ONNXRuntime C++需要的cmake版本:


3.26.0


及以上,gcc版本:


9


及以上。你可以通过以下两个命令查看cmake和gcc的版本:

cmake --version
gcc --version

如果你的cmake和gcc版本不符合要求,可以参考以下两位大神的博客,照着来完全是ok的。


Ubuntu18.04 Cmake 升级


Ubuntu18.04 GCC/G++ 升级

2.下载源码并编译

升级完成 Cmake和gcc后,就可以下载源码,开始编译之旅了。

2.1安装依赖

sudo apt update
sudo apt install -y build-essential cmake git libprotobuf-dev protobuf-compiler

2.2克隆ONNX Runtime源代码仓库

git clone --recursive https://github.com/microsoft/onnxruntime.git
cd onnxruntime

2.3配置和构建ONNX Runtime

这将使用CMake进行配置,并使用Release配置项构建ONNX Runtime共享库。

--parallel

选项可用于并行构建以加快速度。

./build.sh --config Release --build_shared_lib --parallel

2.4安装ONNX Runtime

这将在系统上安装ONNX Runtime共享库和头文件。

cd build/Linux/Release
sudo make install

2.5验证安装

创建一个名为”

test.cpp"

的文件,并将其中的<path_to_your_onnx_model>替换成你实际的onnx模型的地址。

#include <onnxruntime/core/providers/cpu/cpu_provider_factory.h>
#include <onnxruntime/core/session/onnxruntime_cxx_api.h>
#include <iostream>

int main() {
    Ort::Env env(ORT_LOGGING_LEVEL_WARNING, "ONNXRuntime");
    Ort::SessionOptions session_options;
    Ort::Session session(env, "<path_to_your_onnx_model>", session_options);
    std::cout << "ONNX Runtime installed and configured successfully!" << std::endl;
    return 0;
}

然后编译C++示例:

g++ test.cpp -o test -I /usr/local/include/onnxruntime -L /usr/local/lib -lonnxruntime

./test

如果你编译不通过,那你可能需要替换

“<onnxruntime/core/providers/cpu/cpu_provider_factory.h>”

“<onnxruntime/core/session/onnxruntime_cxx_api.h>”的地址。

查看方式如下,不出意外你会得到你的库的实际地址,然后替换即可:

locate cpu_provider_factory.h
locate onnxruntime_cxx_api.h

重新编译,运行./test成功后,你会得到这样的信息:

至此,ONNXRuntime C++ API成功编译完成,可以开始“愉快”的码代码之路了!



版权声明:本文为m0_46303486原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。