最近尝试了再UBUNTU16.04下安装显卡驱动和CUDA的,再安装OPENCV和cudnn。在此结合其他教程和我自己修改的地方,把安装的步骤书写一下,以便自己以后查看和他人参考。
安装步骤如下:
**

1.禁用 nouveau

**
安装好依赖包后需要禁用 nouveau,只有在禁用掉 nouveau 后才能顺利安装 NVIDIA 显卡驱动,禁用方法就是在 /etc/modprobe.d/blacklist-nouveau.conf 文件中添加一条禁用命令,首先需要打开该文件,通过以下命令打开:
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf 打开后发现该文件中没有任何内容,写入:

blacklist nouveau option nouveau modeset=0

再刷新一下

sudo update-initramfs -u

2.删掉当前显卡

(1)打开终端,删掉当前显卡

sudo apt-get remove nvidia*

(2)按住alt+ctrl+F1 ,进入黑色界面
login:(输入你的用户名)
password:(输入你的密码)
登陆成功后,输入
sudo service lightdm stop (如果stop成功,界面会变得有点模糊)
重启
reboot

3.安装新显卡驱动

重启后,再次ctrl+alt+F1进入黑色界面

sudo service lightdm stop

此时再按ctrl+alt+F7应该不会再回去桌面了

chmod +x NVIDIA.run
sudo ./NVIDIA.run

进入安装界面,其中可能需要输入“yes”,完成安装.
再次按ctrl+alt+F1进入黑色界面

sudo service lightdm start

按ctrl+alt+F7进入返回桌面,此时从【设置】–【详细信息】–【图形型号】就可以看到已经是新的图形显卡。

4.在新显卡驱动上安装CUDA

再次按ctrl+alt+F1进入黑色界面

sudo service lightdm stop
chmod +x cuda.run
sudo ./cuda.run

进入安装CUDA界面,会有一个询问,输入"accept",还有一个选择询问是否安装NVIDIA驱动,输入"n",此时有一个协议界面需要一直按着Enter键到100%,再后面选择yes…直至安装结束
重启后登录进入系统,配置 CUDA 环境变量,与第3步相同,使用 gedit 命令打开配置文件:

sudo gedit ~/.bashrc

在该文件最后加入以下两行并保存:

export PATH=/usr/local/cuda-8.0/bin:$PATH
 
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

刷新

source ~/.bashrc

5.安装OPEN CV

提前那安装一些依赖项

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
 
sudo apt-get install --no-install-recommends libboost-all-dev
 
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
 
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
 
sudo apt-get install git cmake build-essential

有一定几率安装失败而导致后续步骤出现问题,所以要确保以上依赖包都已安装成功,验证方法就是重新运行安装命令,如验证 Git cmake build-essential是否安装成功共则再次运行以下命令:

sudo apt-get install git cmake build-essential

再配置环境变量

sudo gedit ~/.bashrc

打开后在文件最后加入以下两行内容:

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

保存后退出
进入官网 : http://opencv.org/releases.html , 选择 3.4.2 版本的 source , 下载 最新版的OpenCV.zip
解压到你要安装的位置,命令行进入已解压的文件夹 opencv-3.4.2 目录下,执行:

mkdir build # 创建编译的文件目录
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
注意这里,如果没连接外网,就会一直下载一个东西,很慢甚至可能失败,所以参考我下面注【1】的这个方法,把ippicv加到路径中,再执行。
make -j8  #编译

【注1】下载下来open cv 的安装包,将opencv-3.4.2.zip和ippicv-2017u.tgz放入同一个目录下,并将前者解压缩。
再进入opencv3.4的文件夹–【3rdparty】–【ippicv】–【ippicv.make】,将里面的路径网址改成刚才存放ippicv-2017.tgz文件的路径(“file:/root/dyg/”)。这个ippicv-2017u.tgz文件单独在我的百度云中可以下载,稍后更新。注意这个ippicv的版本和opencv的版本是要对应的,具体的在opencv的3dparty/ippicv/ippicv.camke里面查看
完成安装。

【补充–还可能出现的bug】
1.如果你的电脑没有装过anaconda

cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules 
..

如果装过anaconda

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_SHARED_LIBS=OFF -D WITH_OPENMP=ON -D ENABLE_PRECOMPILED_HEADERS=OFF ..

2.出现vtk的各种错误,只需要一个一个安装上
如:The imported target “vtkParseJava” references the file “/usr/bin/vtkParseJava” but this file does no
输入:

sudo apt-get install libvtk-java

其他的包如此类推

6.安装cudnn

(1)登录官网:https://developer.nvidia.com/rdp/cudnn-download ,下载对应 cuda 版本且 Linux 系统的 cudnn 压缩包,注意官网下载 cudnn 需要注册帐号并登录
(2)下载完成后解压,得到一个 cudn 文件夹,该文件夹下include 和 lib64 两个文件夹,命令行进入 cudn/include 路径下,然后进行以下操作:

sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件

然后命令行进入 cudn/lib64 路径下,运行以下命令:

sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库
cd /usr/local/cuda/lib64/sudo rm -rf  .5 #删除原有动态文件
sudo ln -s .5.1.10 .5 #生成软衔接
sudo ln -s .5  #生成软链接

这里需要注意第三行命令,网上有人的第三行命令为:

sudo ln -s .5.1.5 .5 #生成软衔接

起初我执行的也是上条链接 .5.1.5 的命令,但是后面编译caffe时出错,报错内容为 /usr/bin/ld: 找不到 -lcudnn,所以这里需要先查看一下自己应该链接的是 .5.1.10 还是 .5.1.5 ,查看方法为下:

locate 

安装完成后可用 nvcc -V 命令验证是否安装成功,若出现以下信息则表示安装成功:
xxx@xxxx:~$ nvcc -V
nvcc: NVIDIA ® Cuda compiler driver
Copyright © 2005-2016 NVIDIA Corporation
Built on Tue_Jan_10_13:22:03_CST_2017
Cuda compilation tools, release 8.0, V8.0.61