c++导入TensorRT的C++ API ubuntu
时间: 2025-03-14 17:11:35 浏览: 59
<think>好的,我现在需要帮助用户在Ubuntu系统上通过C++导入TensorRT的C++ API。首先,我得回顾一下用户提供的引用内容,看看有没有相关的步骤或者常见问题。
根据引用[1],安装TensorRT需要先安装CUDA和cuDNN,然后通过pip安装。但用户提到的是C++部署,引用[2]指出在C++中使用TensorRT需要配置头文件和依赖库,特别是cuda_runtime.h和相关的库路径。这可能涉及到环境变量的设置,比如LD_LIBRARY_PATH。
用户的问题是在Ubuntu上使用C++导入TensorRT的API,所以可能需要从源码或deb包安装TensorRT,而不仅仅是pip安装Python版本。引用[5]提到下载适配CUDA版本的TensorRT安装包,解压并安装whl文件,但这里用户需要的是C++库,可能需要安装对应的.deb包或者tar文件。
安装CUDA的部分可以参考引用[4],使用runfile安装CUDA 11.0.3。但需要确认TensorRT版本是否兼容用户安装的CUDA版本。例如,如果用户安装了CUDA 11.0,可能需要TensorRT 7.x或8.x,具体要看官方文档。
引用[5]还提到安装过程中遇到的问题,比如onnx-graphsurgeon的问题,通过更新pip解决。但C++部署可能不需要这部分,除非用户用到ONNX转换工具。
接下来,步骤可能包括:
1. 安装CUDA和cuDNN(根据TensorRT版本要求)
2. 下载并安装TensorRT的.deb或tar包
3. 配置CMakeLists.txt,包含TensorRT的头文件和链接库
4. 设置环境变量,如LD_LIBRARY_PATH指向TensorRT的库目录
5. 测试一个简单的C++程序,确保能正确调用TensorRT API
需要注意的问题可能包括版本兼容性,例如CUDA、cuDNN和TensorRT的版本是否匹配。例如,TensorRT 7.2.3可能要求CUDA 11.0,而用户安装的CUDA版本是否符合要求?
另外,在CMake配置中,需要正确指定TensorRT的路径。如果通过deb包安装,可能默认安装在/usr/include和/usr/lib/x86_64-linux-gnu,而如果是tar包解压,可能需要手动指定路径。
用户可能在编译时遇到找不到头文件或链接错误,这时候需要检查include路径和链接库是否正确。例如,在CMake中添加include_directories和link_directories,以及target_link_libraries添加nvinfer等库。
可能还需要安装其他依赖,如libnvinfer-dev,具体取决于安装方式。如果用户通过tar包安装,可能需要将库文件复制到系统路径,或者设置LD_LIBRARY_PATH。
最后,测试部分可以参考引用[5]中的测试步骤,编译一个简单的TensorRT程序,比如创建Logger对象,确保能正常运行。</think>以下是在 Ubuntu 系统中通过 C++ 导入 TensorRT C++ API 的步骤指南:
---
### **1. 安装依赖环境**
#### 1.1 安装 CUDA 和 cuDNN
- **CUDA 安装**
根据 TensorRT 版本选择适配的 CUDA 版本(例如 TensorRT 7.x 对应 CUDA 11.0)[^4]。
使用以下命令安装 CUDA:
```bash
wget https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda_11.0.3_450.51.06_linux.run
sudo sh cuda_11.0.3_450.51.06_linux.run
```
- **cuDNN 安装**
从 NVIDIA 官网下载与 CUDA 版本匹配的 cuDNN 包,解压后复制文件到 CUDA 目录:
```bash
sudo cp cudnn/include/* /usr/local/cuda/include/
sudo cp cudnn/lib64/* /usr/local/cuda/lib64/
```
#### 1.2 安装 TensorRT
- **下载 TensorRT 安装包**
从 NVIDIA 官网下载与 CUDA 版本匹配的 TensorRT 的 `.tar` 或 `.deb` 包(例如 `TensorRT-7.2.3.4.Ubuntu-18.04.x86_64-gnu.cuda-11.0.cudnn8.1.tar.gz`)[^5]。
- **安装 TensorRT**
若使用 `.tar` 包:
```bash
tar -xzvf TensorRT-7.2.3.4.Ubuntu-18.04.x86_64-gnu.cuda-11.0.cudnn8.1.tar.gz
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/TensorRT/lib
```
---
### **2. 配置 C++ 项目**
#### 2.1 设置 CMakeLists.txt
在项目的 `CMakeLists.txt` 中添加 TensorRT 的头文件和库路径:
```cmake
cmake_minimum_required(VERSION 3.10)
project(tensorrt_demo)
# 添加 TensorRT 头文件路径
include_directories(/path/to/TensorRT/include)
# 添加 TensorRT 库路径
link_directories(/path/to/TensorRT/lib)
add_executable(demo main.cpp)
# 链接 TensorRT 核心库
target_link_libraries(demo nvinfer nvinfer_plugin)
```
#### 2.2 环境变量配置
在 `~/.bashrc` 中添加库路径:
```bash
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/TensorRT/lib
```
---
### **3. 编写测试代码**
创建 `main.cpp` 测试 TensorRT API:
```cpp
#include <NvInfer.h>
#include <iostream>
using namespace nvinfer1;
int main() {
Logger logger; // TensorRT 日志类
IBuilder* builder = createInferBuilder(logger);
std::cout << "TensorRT C++ API 导入成功!" << std::endl;
builder->destroy();
return 0;
}
```
#### 编译与运行
```bash
mkdir build && cd build
cmake ..
make
./demo
```
---
### **常见问题解决**
1. **头文件缺失**
检查 `CMakeLists.txt` 中的 `include_directories` 路径是否正确。
2. **库链接失败**
确认 `LD_LIBRARY_PATH` 包含 TensorRT 的库路径[^2]。
3. **版本不兼容**
确保 CUDA、cuDNN 和 TensorRT 版本严格匹配[^5]。
---
阅读全文
相关推荐


















