ubuntu 18.04 编译cuda 11.1 + cudnn 8.0.5 + opencv + qt踩过的各种坑汇总

ubuntu 18.04 编译cuda 11.1 + cudnn 8.0.5 + opencv + qt踩过的各种坑汇总

写在之前

1、关于ubuntu版本。
个人不建议使用ubuntu20.04,我用ubuntu20.04用了近半年,最后还是换成了18.04,因为各种bug、依赖问题太多,非常恶心。本文全部操作都在ubuntu18.04下完成。
2、关于qt
建议使用apt安装,简单快捷并且各种依赖都不会有问题。
3、关于opencv
非必要尽量使用opencv3
4、关于cmake
使用cmake-gui,简单直观。
直接使用sudo cmake-gui来打开cmake-gui
如果提示找不到命令的话,先安装cmake-qt-gui
5、关于cuda和cudnn
最近nvidia上下载cudnn很抽象,我反正是下的断断续续
cudnn版本要按照标题和cuda匹配。cuda版本则通过nvidia-smi信息来选择。
本文不会写如何安装这两样东西,因为安装方法基本未变。本文只讲坑。
6、下好opencv源码后,打开cmake-gui,第一个框选择opencv目录,第二个框选则自己新建的release文件夹,提前下好对应版本的opencv-contrib文件
7、第一遍configure,勾选WITH_QT WITH_CUDA OPENCV_DNN_CUDA还有什么math,把opencv-contrib/modules路径填入什么extra中,再次点击configure,此时再勾选CUDA_FAST_MATH 指定bin算力

正式坑

1、opencvdownload问题
该问题是由于国内访问下载地址过慢造成的,网上大多说自己下好再扔进.cache,但直接获取地址后还是不好使,一本万利的方法是修改hosts,用站长工具dns选择一个ttl低的ip,贴出我的hosts文件

# GitHub Start
108.160.167.148 github.global.ssl.fastly.net
52.74.223.119 github.com
192.30.253.119 gist.github.com
54.169.195.247 api.github.com
185.199.111.153 assets-cdn.github.com
151.101.108.133 raw.githubusercontent.com
151.101.108.133 user-images.githubusercontent.com
151.101.108.133 gist.githubusercontent.com
151.101.108.133 cloud.githubusercontent.com
151.101.108.133 camo.githubusercontent.com
151.101.108.133 avatars0.githubusercontent.com
151.101.108.133 avatars1.githubusercontent.com
151.101.108.133 avatars2.githubusercontent.com
151.101.108.133 avatars3.githubusercontent.com
151.101.108.133 avatars4.githubusercontent.com
151.101.108.133 avatars5.githubusercontent.com
151.101.108.133 avatars6.githubusercontent.com
151.101.108.133 avatars7.githubusercontent.com
151.101.108.133 avatars8.githubusercontent.com
# GitHub End

2、cudnn找不到
我在编译过程中出现找不到cudnn的错误,但是我用sample已经验证过了,cudnn毫无问题。我找到报错的地方,发现没有定义HAVE_CUDNN,然后又找到FINDCUDNN文件,发现是find_package 出现了问题,版本不符合要求。最后一番搜索后,发现cudnn版本是卸载CUDNN_MAJOR这宏中的,而这个宏不在cudnn.h中,再次回到FINDCUDNN中,发现CUDNN_VERSION这个宏是在cudnn_version.h这个头文件中获取的,于是真相大白,这个文件我并没有复制过去。
如果确定安装了cudnn(即将对应文件复制到cuda对应文件夹中)并且确保版本正确,那么可能是缺少cudnn_version.h这个文件导致的,因为网上某些教程只说了要复制cudnn.h,但实际上现在需要把目录下所有文件全部复制过去。
之后关闭cmake,将release文件夹里的内容全部删除。重新来一遍。

你可能感兴趣的:(ubuntu,深度学习,cuda,cudnn,ubuntu,opencv)