Ubuntu18.04安装Nvidia显卡驱动,CUDA+CUDNN,完整Qt,编译安装OpenCV4.1.1 with CUDA and Qt

〇、N卡无法开机问题

如果是刚刚安装Ubuntu或使用U盘体验系统要安装Ubuntu,因为NVIDIA显卡驱动导致的卡LOGO等问题,在grub里选择Ubuntu,按e进入启动选项,在quiet splash 后面添加 nomodeset,F10保存,就可以开机了,但是只能一次有效,做完第二步就可以直接开机了。

一、安装Nvidia显卡驱动

网上方法很多,但是这个我方法在各种电脑上都试过(甚至是工作站的Quadro显卡,Ubuntu18.04 Server系统上)没出现过任何问题。

1.禁用安全引导

UEFI的安全引导会阻止第三方驱动运行,导致无法安装驱动,所以需要禁用,禁用方法是进入BIOS,找到boot选项卡中的Secure Boot选项,设置为Disable,保存重启即可。

2.禁用默认驱动程序

sudo vi /etc/modprobe.d/blacklist.conf

在最后面添加以下内容

blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb

更新内核后重启

sudo update-initramfs -u

验证默认驱动是否成功屏蔽

lsmod | grep nouveau

若成功应该没有任何输出

3.添加Nvidia驱动源

如果网络原因导致下载缓慢,可以先更换apt源

sudo apt edit-sources

选择编辑器,然后将原先内容注释或者直接删除更换为新的国内源

#阿里源
deb http://mirrors.aliyun.com/ubuntu/ xenial main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main multiverse restricted universe

添加Nvidia驱动源

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update

4.安装驱动

查询合适的驱动

ubuntu-drivers devices

稍等片刻就会出现一些提示(我的显卡是1050Ti移动版)

== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001C8Csv0000103Csd00008478bc03sc00i00
vendor   : NVIDIA Corporation
model    : GP107M [GeForce GTX 1050 Ti Mobile]
driver   : nvidia-driver-410 - third-party free
driver   : nvidia-driver-390 - distro non-free
driver   : nvidia-driver-415 - third-party free
driver   : nvidia-driver-435 - distro non-free
driver   : nvidia-driver-440 - distro non-free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin

== /sys/devices/pci0000:00/0000:00:14.3 ==
modalias : pci:v00008086d0000A370sv00008086sd00000034bc02sc80i00
vendor   : Intel Corporation
manual_install: True
driver   : backport-iwlwifi-dkms - distro free

选择带有recommended的版本的显卡驱动(我的是nvidia-driver-440)然后安装

sudo apt install nvidia-driver-440

重启后使用nvidia-smi查看显卡状态如果出现类似输出,并正确识别显卡型号,显存有占用就说明安装成功
在这里插入图片描述

二、安装CUDA和CUDNN

1.下载

在此选择需要的版本的CUDA下载
版本选择完后会引导到选择选择目标平台页面,这里选Linux x86_64 Ubuntu runfile(local)
如果有补丁,一起下载,先安装基础的再安装补丁包,补丁包过程类似

2.安装

运行安装程序

sudo sh xxxxxxx.run

看着英语提示安装,因为各个版本的CUDA安装步骤不太一样,关键是一定不要安装显卡驱动,因为已经装过了,再装会出错,其他的选项都是yes或者默认就行。

3.配置环境变量

将以下内容复制到/etc/bash.bashrc的末尾,这里是添加到系统环境变量里面了

export CUDA_HOME=/usr/local/cuda 
export PATH=$PATH:$CUDA_HOME/bin 
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

然后更新环境变量

source /etc/bash.bashrc

4.测试CUDA

可以使用自带例程确认CUDA安装成功

cd /usr/local/cuda/samples/1_Utilities/deviceQuery 
sudo make
./deviceQuery

如果上面输出一堆你的显卡的信息,最后一个惹人爱的PASS就说明成功了

5.下载,安装CUDNN

在此下载CUDNN
比较烦人的是CUDNN需要英伟达开发者账号才能下载,可以使用普通的英伟达账号登录,选择Login with your social account >看着来,下载和CUDA版本对应的CUDNN,看不懂就网页翻译。
下载完之后解压,进入包含cuda文件夹的那一级文件夹,执行下面四行就安装完成了(如果你的cuda是默认安装路径的话)

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/ 
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ 
sudo chmod a+r /usr/local/cuda/include/cudnn.h 
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

查看CUDNN版本确认一下

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

出现一段C语言代码,算出CUDNN_VERSION的值就是CUDNN的版本。

三、安装Qt和opencv所需的依赖包

里面还包含一些实用工具像htop之类的,相信基本上是必备,已经安装的也不用去掉

sudo apt-get install -y \
    git \
    vim \
    htop \
    cmake \
    cmake-gui \
    screen \
    libavcodec-dev \
    libavformat-dev \
    libavutil-dev \
    libeigen3-dev \
    libglew-dev \
    libgtk2.0-dev \
    libgtk-3-dev \
    libjpeg-dev \
    libpostproc-dev \
    libswscale-dev \
    libtbb-dev \
    libtiff5-dev \
    libv4l-dev \
    libxvidcore-dev \
    libx264-dev \
    zlib1g-dev \
    pkg-config \
    libxcb*

如果想在Python3上使用,安装numpy,numpy需要Cython

sudo -H pip3 install Cython -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo -H pip3 install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

四、安装Qt

x86平台安装Qt是非常方便的,可以在Qt官网下载安装器,安装编译好的程序包,就是同样要注册账号
Qt账号注册
开源版Qt在线安装器下载
下载完使用权限运行安装器(不用权限无法安装到/usr/locat里面)
next会提示登录,如果账号没有许可证,自动是安装开源版
同意开源许可并等待检索仓库后就能看到各种版本了
安装目录更改到/usr/local/Qt
然后选择一个版本的Qt,选择其中的Desktop gcc 64-bit打钩,其他的不用更改然后下一步,等待就完成了。

五、安装Opencv4.1.1 with CUDA and Qt

1.下载源码

源码包 / 拓展包
CUDA支持和很多高级功能是在拓展库里的,所以都要下载,下载完解压到主目录下,两个文件夹挨着放,在opencv-4.1.1里新建一个build文件夹,存放编译缓存。

2.配置cmake

进入build文件夹,执行sudo cmake-gui,使用图形化配置
第一行地址栏定位到opencv-4.1.1文件夹,下一个定位到opencv-4.1.1/build,先Configure一遍,读取配置,然后开始配置

  1. 搜索CMAKE_INSTALL_PREFIX,安装位置,推荐默认位置/usr/local,这样就不用另外配置库路径了
  2. 搜索OPENCV_EXTRA_MODULES_PATH,定位到opencv_contrib-4.1.1/modules
  3. 搜索CMAKE_BUILD_TYPE,填Realease
  4. 搜索OPENCV_GENERATE_PKGCONFIG,打勾,否则pkg-config不管用
  5. 再Configure一遍,读取拓展包配置
  6. 搜索CUDA,全打勾
  7. 搜索WITH_QT,WITH_QT打勾
  8. 搜索WITH_OPENGL,WITH_OPENGL打勾
  9. 如果需要Python3,搜索BUILD_opencv_python3,打勾
  10. 再Configure一遍,读取模块配置
  11. 搜索Qt,确认Qt路径指向的是新安装的版本(不知道版本可以再Configure一遍,从配置输出的GUI选项中找到版本)如果完全按照我之前的方法安装,Qt5_DIR的路径应该是/usr/local/Qt/5.14.0/gcc_64/lib/cmake/Qt5其他的以此类推
  12. 再次搜索CUDA,全打勾,重新配置的过程中会有新的选项出现,例如CUDA_FAST_MATH(千万不要选WITH_NVCUVID否则绝对编译失败)
  13. 清空搜索再Configure,直到没有红色选项,检查最后的配置输出,确认没有问题
  14. Generate 生成Makefile

肯定会出现的问题:

  • 卡在IPPICV下载
    手动下载IPPICV对应版本然后修改opencv-4.1.1/3rdparty/ippicv/ippicv.cmake第47行那个网址为本地网址,例如file:///home/xxxx/Downloads/,指向下载的IPPICV所在文件夹,最后的/不能少,如果成功了,在配置输出的Other third-party libraries选项里会有IPP的版本
  • 卡在face_landmark_model.dat下载
    手动下载然后和上面一样修改opencv_contrib-4.1.1/modules/face/CMakeLists.txt
  • 卡在boostdesc或vgg_generated下载
    等着或者重试就好了这个就是费劲,但是能下,前面的两个是真的下不来

可能出现的问题:

  • 编译时dynlink_nvcuvid.h问题
    如果cuda使用的是10.0版本,并且在后面的编译过程中出现dynlink_nvcuvid.h找不到的错误,下载video_sdk,将里面的cuviddec.h 和nvcuvid.h拷贝到/usr/local/cuda-10.0/include/目录下,将nvcuvid.h 重命名为dynlink_nvcuvid.h,重新编译即可。

3.编译

在build文件夹下执行sudo make,可以开多线程编译-j8,具体多少线程看机器CPU核数和内存够不够。编译完成且没有错误执行sudo make install -j4,过程不长,可以不用开多线程,随便啦

4.验证

查看引用目录和库,输出较不带拓展库的OpenCV多了很多,如果这个生效不出意外就没问题了,程序测试就自己写去了

pkg-config opencv4 --cflags --libs

pkg-config

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值