Ubuntu 16.04安装CUDA8.0 + cuDNN5.1 + OpenCV3.1.0

安装所需所有文件已经上传,压缩包内含cudnn5.1 opencv3.1.0 ippicv_linux_20151201.tgz

http://download.csdn.net/download/panmingqi1996/10267205

1. 装显卡驱动

显卡型号:GTX860M。 
查看显卡型号:

lspci | grep VGA

再进入nvidia官网搜索对应的驱动版本。
由于命令行安装比较容易,所以采用命令行安装。 
开始安装: 
首先按住ctrl+Alt+F1进入文字界面,然后执行以下语句:

sudo apt-get purge nvidia-*
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-370
sudo reboot

重启后执行:

nvidia-smi

2. cuda8.0安装

文件可在https://developer.nvidia.com/cuda-downloads下载run文件,注意不要下载deb,小问题会很多。这里为了方便将下载到的文件重命名为cuda.run

chmod 777 cuda.run
sudo ./cuda.run --override
需要一直按住空格键。 
后面选项答案依次为: 
accept 
n (否则会覆盖当前的显卡驱动)

直接回车


直接回车

3. CUDNN安装

下载地址: https://developer.nvidia.com/cudnn  ,需要nvidia账户,注册一个即可。
下载得到cudnn-8.0-linux-x64-v5.1.tgz 

进入下载目录,解压:

tar zxvf cudnn-8.0-linux-x64-v5.1.tgz -C ../

解压后有个cuda文件,内有include和lib64两个文件夹,进入include文件夹,执行如下命令复制头文件:

cd ../cuda/include/
sudo cp cudnn.h /usr/local/cuda/include/

再cd命令切换进lib64文件夹,执行如下命令复制动态链接库:

cd ../lib64/
sudo cp lib* /usr/local/cuda/lib64/

然后进入复制后的动态链接库进行新的链接。先进入目录:

cd /usr/local/cuda/lib64/

然后查看已有链接:

ls -al | grep libcudnn

我们需要删除原有动态文件:

sudo rm -rf libcudnn.so libcudnn.so.5

再次查看发现已删除,现在建立新的链接:

sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so

再次查看

ls -al | grep libcudnn

发现已链接好,然后设置环境变量和动态链接库:

sudo gedit /etc/profile

然后再打开的文件末尾加上(“=”前后不要有空格)

export PATH=/usr/local/cuda/bin:$PATH

保存之后创建链接文件:

sudo vim /etc/ld.so.conf.d/cuda.conf

如果出现:

vim : command not found

于是检查一下vim是否安装:

rpm -qa|grep vim 

如果rpm没有安装,则按照提示执行:

sudo apt install rpm

再执行

rpm -qa|grep vim

什么结果也没有返回。于是在命令行输入:

vim

出现下面的结果:

The program 'vim' can be found in the following packages:...

则开始安装vim

sudo apt install vim

安装完成后再执行:

sudo vim /etc/ld.so.conf.d/cuda.conf

现在可以打开了。在文件加入以下内容:

/usr/local/cuda/lib64

按下esc,按下wq保存后退出。并在终端输入以下命令使该链接生效:

sudo ldconfig

使用sample里面的例子来测试还需要编译。在编译之前,我们需要修改配置文件,否则无法编译成功。

首先查看自己的gcc版本:

gcc --version
这里GCC版本要在5.3以下,由于ubuntu16.04自带的gcc版本为5.4,于是执行:
cd /usr/local/cuda-8.0/include/
sudo cp host_config.h host_config.h.bak
sudo gedit host_config.h

host_config.h中

#if __GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 3)

改为

#if __GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 9)

保存后退出。然后进入用例文件进行编译(注意执行第二步命令时候需要较长时间是正常现象):

cd bin/x86_64/linux/release/
sudo ./deviceQuery

结果为PASS说明显卡驱动和cuda安装成功。

4. OpenCV3.1.0安装与配置

这也是问题最多的一步,我们从官网下载:http://opencv.org/downloads.html ,然后解压:

unzip opencv-3.1.0.zip -d ../
cd ../opencv-3.1.0
mkdir build
cd build

安装opencv前还需要安装一些依赖项:

sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

然后开始编译

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

现在CMakeLists.txt 中需要加入一行:

cd ../
vim CMakeLists.txt 

在弹出的文件开头加入一行(注意里面的引号要英文状态下的):

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES") 

然后按esc和:wq保存退出。 
编译安装:

cd build/
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j16

注意:过程中要下载ippicv_linux_20151201.tgz,由于网络的原因,这个文件经常会下载失败。于是我们需要单独下载ippicv_linux_20151201.tgz,然后执行:

ipp_file=../ippicv_linux_20151201.tgz             &&
ipp_hash=$(md5sum $ipp_file | cut -d" " -f1)      &&
ipp_dir=3rdparty/ippicv/downloads/linux-$ipp_hash &&

mkdir -p $ipp_dir &&
cp $ipp_file $ipp_dir

另外如果在make到89%时出错,卡在了graphcuts.cpp.o,可以这样解决:

首先找到graphcuts.cpp

vim ../modules/cudalegacy/src/graphcuts.cpp 

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

改为

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)

保存后退出,再次make -j16发现编译成功。可以开始安装:

sudo make install


你可能感兴趣的:(opencv)