Ubuntu20.02下CUDA11.2+cudnn8.1.1+opencv+opencv_contrib4.5.2编译【随缘版本更新】
系统 Ubuntu20.02
NVIDIA驱动版本 >=465
CUDA版本 11.2.2
cudnn版本 8.1.1
Opencv版本 4.5.2
辅助工具 cmake-gui:用来编译opencv
NVIDIA驱动下载
CUDA下载
cudnn下载
NVIDIA和CUDA下载linux x64 .run版本
cudnn下载deb版,就是下面三
注意事项:驱动版本一定要高于CUDA要求版本,具体CUDA版本需求可在
这里就直接贴出来
查看系统目前驱动版本
nvidia-smi
表格第一行分别是smi版本,驱动版本和CUDA版本,这里我单独安装的smi包导致版本不一致,不用管没影响(目前)
OpenCV版本一定是4.5.2+,否则cudnn不支持,cmake时会报错找不到cudnn
安装步骤
1.命令行切换到下载目录,修改权限并运行安装
sudo chmod 777 NVIDIA-Linux-x86_64-465.31.run
sudo ./NVIDIA-Linux-x86_64-465.31.run
如果提示用系统其他方法安装一律忽略
安装后使用nvidia-smi查看是否安装成功
2.安装cuda包
sudo chmod 777 cuda_11.3.1_465.19.01_linux.run
sudo ./cuda_11.3.1_465.19.01_linux.run
可能需要等一段时间运行,弹出如下安装界面,输入accept
在安装界面,取消驱动Driver的安装,其余默认即可,安装前界面应如下:
安装完成后会出现汇总信息
之后进行环境配置,打开~/.bashrc文件编辑
sudo gedit ~/.bashrc
#修改PATH和LD_LIBRARY_PATH和CUDA_HOME变量
CUDA_HOME=/usr/local/cuda-11.2/bin:$CUDA_HOME
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.2/lib64
PATH=$PATH:$CUDA_HOME保存文件后
source ~/.bashrc
之后输入nvcc -V测试
nvcc -V
出现如下结果安装成功
3.安装cudnn
依次执行
sudo dpkg -i libcudnn8_8.1.1.33-1+cuda11.2_amd64.deb
sudo dpkg -i libcudnn8-dev_8.1.1.33-1+cuda11.2_amd64.deb
sudo dpkg -i libcudnn8-samples_8.1.1.33-1+cuda11.2_amd64.deb
安装成功,注意,利用deb包安装后的cudnn文件路径在/usr/include目录下,与之前大部分默认的/usr/local/cuda-XX/include路径不同,因此按照网上查的版本号显示文件不存在不用惊慌
4.编译安装OpenCV+OpenCV_contrib包
下载OpenCV及其对应的OpenCV_contrib包
OpenCV源码包下载地址:
OpenCV_contrib源码包下载地址:
解压,在OpenCV源码包中新建build文件夹
执行cmake-gui指令,要用root权限,搜索EXTRA字段,指定文件夹到OpenCV_contrib/modules目录下
cd opencv-4.5.2
mkdir build
sudo cmake-gui
搜索CUDA字段,勾选
指定编译版本为Release
搜索PYTHON勾选
点击Configure,等待生成无误后点击Generate
注意查看Configure的信息是否有cudnn版本
关闭cmake-gui,在build目录执行
sudo make -j8
sudo make install
安装成功安装编译后配置环境,依旧打开~/.bashrc添加PKG_CONFIG_PATH
sudo gedit ~/.bashrc
#添加路径PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
#保存退出
sudo ldconfig -v
source ~/.bashrc
完成配置
错误排除(持续更新)
1. make OpenCV时报错error boostdesc.cpp xxxxxx not declare
查阅报错位置和include文件位置,发现自己的缓存文件竟然是一个空的(掀桌,空编译了好几次)
从网上下载对应文件放到指定目录即可,具体可看
主要有如下代码(github中BenbenIO的解决方法):
#!/bin/bash
#主要是在opencv源码包中的隐藏目录.cache文件 即opencv源码包文件 当前目录为 ~/opencv-4.5.2/
cd ./cache/xfeatures2d/
cd boostdesccurl
如果遇到权限不足的问题,直接修改boostdesc文件夹权限为777,简单粗暴= =
以上(持续更新)
若遇到其它问题可留言,后续继续补充此答案汇总,有需要源码包的朋友可留言邮箱或私信发,后续补充会在这里放上链接自取
2021.6.10更新
重装了nvidia驱动,要命。。
提示nvi_drm错误已加载
卸载nvidia驱动:
nvidia-uninstall
sudo apt-get --purge nvidia*
禁用图形桌面,在命令行输入
sudo isolate multi-user.target
黑屏不要慌,按Ctrl+Alt+F3~7其中一个弹出tty界面,输入
sudo modprobe -r nvidia_drm
之后重新运行安装程序,在显示使用DK*那一步选择否即可










浙公网安备 33010602011771号