显卡型号: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
文件可在https://developer.nvidia.com/cuda-downloads下载run文件,注意不要下载deb,小问题会很多。这里为了方便将下载到的文件重命名为cuda.run
chmod 777 cuda.run
sudo ./cuda.run --override
需要一直按住空格键。
直接回车
进入下载目录,解压:
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安装成功。
这也是问题最多的一步,我们从官网下载: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