🧠 Ubuntu 下通过 deb 安装 TensorRT 8.6.1 的完整指南(含问题排查与验证)
适用环境:Ubuntu 22.04 + CUDA 11.8 + 手动安装 cuDNN + APT 安装 TensorRT 目标:成功安装并验证 TensorRT,解决常见依赖与路径问题
一、背景
TensorRT 是 NVIDIA 提供的高性能推理引擎,广泛用于部署深度学习模型。官方提供 .deb
包安装方式,但在实际使用中常因 cuDNN 版本不匹配 或 路径配置问题 导致安装失败或运行异常。
本文记录了从安装到验证的完整过程,重点解决以下典型问题:
- APT 安装 TensorRT 时因 cuDNN 依赖失败
ldconfig
报 “not a symbolic link” 警告trtexec
命令找不到- 如何验证 TensorRT 是否真正可用
二、安装流程简述
1. 安装 CUDA 11.8
通过官方 .run
文件或 .deb
包安装:
sudo apt install cuda-toolkit-11-8
2. 手动安装 cuDNN(如 8.9.7)
从 NVIDIA 官网下载 cuDNN for CUDA 11.8,解压后复制到 CUDA 目录:
sudo cp -P libcudnn*.so* /usr/local/cuda-11.8/targets/x86_64-linux/lib/
sudo chmod a+r /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn*
⚠️ 此时
libcudnn.so.8
是普通文件,非符号链接 → 后续会引发ldconfig
警告。
3. 安装 TensorRT(通过官方 deb 包)
# 添加本地仓库(以 8.6.1 + CUDA 11.8 为例)
sudo dpkg -i nv-tensorrt-local-repo-ubuntu2204-8.6.1-cuda-11.8_1.0-1_amd64.deb
sudo cp /var/nv-tensorrt-local-repo-*/7fa2af80.pub /usr/share/keyrings/
sudo apt update
sudo apt install tensorrt
三、常见问题与解决方案
❌ 问题 1:APT 安装失败,提示缺少 libcudnn8
原因:APT 无法识别手动安装的 cuDNN。
✅ 解决方案:创建虚拟包欺骗 APT
# 安装 equivs 工具
sudo apt install equivs
# 创建虚拟包定义
cat > libcudnn8 <<EOF
Section: misc
Priority: optional
Standards-Version: 3.9.2
Package: libcudnn8
Version: 8.9.7-1+cuda11.8
Description: Fake libcudnn8 to satisfy APT
EOF
# 构建并安装虚拟包
equivs-build libcudnn8
sudo dpkg -i libcudnn8_8.9.7-1+cuda11.8_all.deb
之后即可正常 apt install tensorrt
。
⚠️ 问题 2:ldconfig
报 “not a symbolic link” 警告
/sbin/ldconfig.real: /usr/local/cuda/.../libcudnn.so.8 is not a symbolic link
原因:手动复制的 libcudnn.so.8
是普通文件,而非指向 libcudnn.so.8.9.7
的符号链接。
✅ 解决方案:重建符号链接
cd /usr/local/cuda/targets/x86_64-linux/lib/
sudo rm libcudnn*.so.8
sudo ln -sf libcudnn.so.8.9.7 libcudnn.so.8
sudo ln -sf libcudnn_ops_infer.so.8.9.7 libcudnn_ops_infer.so.8
# ... 其他组件同理
sudo ldconfig
💡 此警告不影响功能,但修复后更规范。
❌ 问题 3:trtexec: command not found
原因:trtexec
位于 /usr/src/tensorrt/bin/
,但未加入 PATH
。
✅ 解决方案:添加到环境变量
编辑 ~/.bashrc
:
export TENSORRT_ROOT=/usr/src/tensorrt
export PATH=$TENSORRT_ROOT/bin:$PATH
然后:
source ~/.bashrc
trtexec --help # 应正常输出帮助信息
四、完整验证步骤
✅ 1. 检查安装状态
dpkg -l | grep tensorrt
# 应看到 tensorrt 和 libnvinfer8 等包
✅ 2. 检查动态库注册
ldconfig -p | grep nvinfer
# 应列出 libnvinfer.so.8 等
✅ 3. 编译并运行官方示例
# 复制示例到用户目录(避免权限问题)
cp -r /usr/src/tensorrt/samples/sampleOnnxMNIST ~/
cd ~/sampleOnnxMNIST
make
./sample_onnx_mnist
成功输出示例:
[10/12/2025-18:42:17] [I] Prob 4 0.9911 Class 4: **********
...
&&&& PASSED TensorRT.sample_onnx_mnist
✅ 表示 CUDA + cuDNN + TensorRT 全链路正常!
✅ 4. 测试 trtexec
trtexec --onnx=/path/to/model.onnx --verbose
可用于快速构建 .engine
推理引擎。
五、环境变量建议(.bashrc
配置)
# CUDA
export CUDA_HOME=/usr/local/cuda-11.8
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
# TensorRT
export TENSORRT_ROOT=/usr/src/tensorrt
export PATH=$TENSORRT_ROOT/bin:$PATH
# OpenCV / ONNX Runtime(按需)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/install/opencv4.5.4/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/install/onnxruntime-linux-x64-gpu-1.15.1/lib
🔔 注意:TensorRT 库已安装在
/usr/lib/x86_64-linux-gnu/
,无需额外添加LD_LIBRARY_PATH
。
六、进阶:多版本 OpenCV 共存
若需为不同程序使用不同 OpenCV 版本:
# 临时指定库路径
LD_LIBRARY_PATH=/path/to/opencv4.8.0/lib ./your_program
或编译时设置 RPATH
,或使用 Conda/Docker 隔离环境。
七、总结
步骤 | 状态 |
---|---|
✅ CUDA 11.8 安装 | 完成 |
✅ cuDNN 8.9.7 手动安装 | 完成 |
✅ TensorRT 8.6.1 通过 deb 安装 | 成功(借助虚拟包) |
✅ldconfig 警告修复 | 已处理 |
✅trtexec 全局可用 | 已配置 |
✅ 官方示例运行成功 | ✅ 验证通过 |
📚 参考资料
- NVIDIA TensorRT 官方文档
- cuDNN 安装指南
man ldconfig
,man ld.so