Ubuntu16.04 安装后配置系列(二),配置Python3.6、NVIDIA显卡驱动,CUDA+CUDNN,tensorflow-gpu以及OpenCV+OpenCV_contrib

一、安装python3.6

1,Ubuntu16.04中添加python3.6软件包并安装

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:jonathonf / python-3.6
sudo apt-get update
sudo apt-get install python3.6

2,调整python3.6为默认

(1)调整python3.6为python3的默认

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
sudo update-alternatives --config python3

            在终端中输入python3可以验证

更改完成之后要做如下设置,不然ctrl+alt+T将无法打开终端

进入路径/usr/lib/python3/dist-packages/gi

将里面的_gi_cairo.cpython-35m-x86_64-linux-gnu.so和_gi_cairo.cpython-35m-x86_64-linux-gnu.so两个文件名中的35改为36,命令如下:

mv _gi_cairo.cpython-35m-x86_64-linux-gnu.so _gi_cairo.cpython-36m-x86_64-linux-gnu.so
mv _gi.cpython-35m-x86_64-linux-gnu.so _gi.cpython-36m-x86_64-linux-gnu.so

(2)调整python3为python的默认

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

                撤回更改需要输入

sudo update-alternatives --config python

3,配置python3.6的基础库,这一步至关重要,如果不配置,极其影响后面的相关配置,例如opencv会找不到python.h文件

sudo apt-get install libpython3.6-dev

4,安装pip3

sudo apt install python3-pip

二、安装NVIDIA驱动,有两种方法,一种是命令行安装源文件,一种是ppa源安装

我笔记本的配置是Ubuntu16.04+NVIDIA GTX850

去官网查询合适自己电脑的NVIDIA驱动

http://www.nvidia.com/Download/index.aspx?lang=en-us



我选择的版本是390.67,

(一)ppa源安装

sudo add-apt-repository ppa:graphics-drivers/ppa  
sudo apt-get update  
sudo apt-get install nvidia-390 #此处要根据上面查询到的版本适当更改
sudo apt-get install mesa-common-dev  
sudo apt-get install freeglut3-dev

安装完成后测试

nvidia-smi #出现电脑gpu列表

nvidia-settings #出现电脑显卡信息

(二)下载“.run”文件后命令行安装

    1, 卸载可能存在的NVIDIA相关驱动等

(1)ctrl+alt+F1切换到纯命令行环境,并关闭图形界面

sudo service lightdm stop

把指令中的stop替换成start可以重新打开图形界面

(2)执行指令

sudo apt-get remove --purge nvidia*

3,禁用nouveau

(1)进入配置文件,

gedit /etc/modprobe.d/blacklist.conf

(2)将nouveau加入黑名单,在文件的末尾加上

blacklist nouveau 

(3)执行下面命令并重启

sudo update-initramfs -u

(4)重启后在终端输入

lsmod | grep nouveau

如果没有输出,则nouveau禁用成功

4,安装NVIDIA驱动

(1)重启,在出现登录界面还未登陆进入时(否则可能会失效),ctrl+alt+F1切换到命令行操作,并禁用图形界面

(2)使用cd指令切换到nvidia驱动所在的文件位置,更改文件执行权限,并执行

sudo chmod a+x NVIDIA-Linux-x86_64-375.20.run
sudo ./NVIDIA-Linux-x86_64-375.20.run –no-opengl-files
#–no-opengl-files尤其重要,如果安装opengl之后,会出现一些问题

(3)在具体执行时要按照提示输入accept,yes,no等,在第一个问题The distribution-provided pre-install script failed! Are you sure you want to continue? 下选择continue,其余均按照默认选择即可

(4)挂载nVidia驱动

modprobe nvidia

(5)测试

nvidia-smi #出现电脑gpu列表
nvidia-settings #出现电脑显卡信息

(6)返回图形界面,如果出现重复登陆的问题,那么很可能是你安装了opengl,请卸载重新安装即可

三、安装CUDA 和  CUDNN

1,查询合适自己电脑的及NVIDIA的版本的cuda版本和cudnn版本, 我选择的是CUDA9.0+CUDNN7.1并下载

2,安装cuda

(1)重启,在出现登录界面还未登陆进入时(否则可能会失效),ctrl+alt+F1切换到命令行操作,并禁用图形界面

(2)使用cd指令切换到nvidia驱动所在的文件位置,更改文件执行权限,并执行,和安装nvidia的指令基本相同,但是在问题Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?要尤其注意选择no,不然之前的nvidia驱动就白装了,其余也要输入accept,yes等

(3)安装完成后推出命令行操作,恢复图形界面

3,重启电脑,并检查Device Node Verification

执行指令

ls /dev/nvidia*

如果出现结果为三个文件/dev/nvidia0      /dev/nvidiactl      /dev/nvidia-uvm,或者包含这三个文件极为正确

如果只有/dev/nvidia0     /dev/nvidiactl而没有第三个文件,解决方法如下:

$ sudo vi /etc/rc.local

文件除注释行外为空,若第一行为

#!/bin/sh -e
应将-e去掉(不然修改无效),把改文件文本变成如下样子
#!/bin/bash

/sbin/modprobe nvidia

if [ "$?" -eq 0 ]; then
# Count the number of NVIDIA controllers found.
NVDEVS=`lspci | grep -i NVIDIA`
N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l`
NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l`

N=`expr $N3D + $NVGA - 1`
for i in `seq 0 $N`; do
mknod -m 666 /dev/nvidia$i c 195 $i
done

mknod -m 666 /dev/nvidiactl c 195 255

else
exit 1
fi

/sbin/modprobe nvidia-uvm

if [ "$?" -eq 0 ]; then
# Find out the major device number used by the nvidia-uvm driver
D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`

mknod -m 666 /dev/nvidia-uvm c $D 0
else
exit 1
fi

重启即可解决问题

4,配置环境变量

终端中输入 

 sudo gedit /etc/profile
在打开的文件末尾,添加以下两行。
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64 ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

执行下面指令使之生效,然后重启

source /etc/profile

5,测试

重启后输入指令显示

cat /proc/driver/nvidia/version

输入nvcc -V


如果显示The program 'nvcc' is currently not installed. You can install it by typing: sudo apt-get install nvidia-cuda-toolkit,说明没有环境没有配置好或者没有安装成功

6,编译cuda提供的例子

cd /home/xxx/NVIDIA_CUDA-9.0_Samples #根据自己的文件位置进行调整
make
cd bin/x86_64/linux/release
执行  ./deviceQuery 显示

执行./bandwidthTest(检查一下系统和CUDA-Capable device的连接情况

7,安装cudnn

(1),将下载的cudnn的压缩包解压

(2),将其移动到相应目录

sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -a cuda/lib64/libcudnn* /usr/local/cuda/lib64

(3),配置环境,链接

cd ~ sudo gedit .bashrc

在弹出的文档的最后加上

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
之后执行
source .bashrc

然后重启终端

之后更改cudnn.h操作权限

sudo chmod a+r /usr/local/cuda/include/cudnn.h

四、安装tensorflow

pip安装:

pip install tensorflow-gpu

测试,在终端输入python出现转换到python的命令界面,依次输入

import tensorflow as tf 
sess = tf.Session() 
a = tf.constant(1) 
b = tf.constant(2) 
print(sess.run(a+b))


五、安装opencv

1,下载opencv和opencv_contrib

下载网址:https://github.com/opencv

分别在opencv和opencv_contrib的release下选择相应的版本,二者版本要相同


2,安装依赖包

       (1), libopencv-dev依赖包

sudo apt install libopencv-dev

        (2), 相关的基础库

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 libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev#处理图像所需的包
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev#处理视频所需的包
sudo apt-get install libatlas-base-devgfortran#优化opencv功能
sudo apt-get install ffmpeg    

        (3)配置ceres库

# CMake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev
# BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse and CXSparse (optional)
clone https://ceres-solver.googlesource.com/ceres-solver
cd ceres-solver
mkdir build && cd build
cmake ..
make -j4
make test
sudo make install

3,安装Google/glogs

网址下载源码https://github.com/google/glog/releases

解压进入glog文件

mkdir build
cd build
cmake ..
sudo make -j24
make install

4,安装gflags

源码地址:https://github.com/gflags/gflags/releases,下载下来解压里面有INSTALL.md详细说明了如何编译安装,可以安装说明中的采用ccmake编译,也可以采用第7步中的方式,效果相同,但是建议采用INSTALL中介绍的方法进行安装

tar xzf gflags-$version-source.tar.gz
cd gflags-$version
mkdir build && cd build
ccmake ..

  - Press 'c' to configure the build system and 'e' to ignore warnings.
  - Set CMAKE_INSTALL_PREFIX and other CMake variables and options.
  - Continue pressing 'c' until the option 'g' is available.
  - Then press 'g' to generate the configuration files for GNU Make.

make
make test    (optional)
make install (optional)

5,安装OpenBLAS

git clone git://github.com/xianyi/OpenBLAS
cd OpenBLAS
sudo make FC=gfortra
sudo make install

6,在opencv目录下新建build文件并切换到build目录下

mkdir build
cd build

7,cmake,make和install

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make
make install

在cmake中由于要指定各个模块的编译与否,选择等,可以采用ccmake .. ,该命令可以使各个模块的安装与否变的可视化

对于opencv3.4.2默认为是不按照cuda的相关模块的(即使笔记本已经安装好相应模块,因此要在cmake时指明,或者直接用ccmake,对于opencv3.4.1及之前的版本则不需要)

cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D WITH_CUDA=ON \
      -D ENABLE_FAST_MATH=1 \
      -D CUDA_FAST_MATH=1 \
      -D WITH_CUBLAS=1 \
      -D CUDA_ARCH_BIN="5" \ # 这个5需要去官网确认使用的GPU所对应的数字(https://developer.nvidia.com/cuda-gpus)
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D BUILD_EXAMPLES=ON ..

在cmake过程中看到在cmake的结果中什么需要的模块没有找到,可以根据自己的需求进行安装

如果cmake过程中出现错误:

In file included from /usr/include/c++/5/unordered_map:35:0,
                 from /usr/local/include/ceres/ordered_groups.h:36,
                 from /usr/local/include/ceres/ceres.h:52,
                 from /home/efan/SoftWares/OpenCV/modules/sfm/src/libmv_light/libmv/multiview/fundamental.cc:24:
/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

解决方法在/opencv/modules/sfm中的cmakelist文件中添加

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")

8,配置opencv的环境

(1)添加路径

sudo gedit /etc/ld.so.conf.d/opencv.conf

执行此命令后打开一个空白文档,在文档上添加

/usr/local/lib

之后执行下面命令打开文件

sudo gedit /etc/ld.so.conf 

依旧是在最后添加

/usr/local/lib

之后执行下面命令,使上述配置生效

sudo ldconfig

(2)配置bash

sudo gedit /etc/bash.bashrc

在打开的文档末尾添加:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH 

之后执行下面命令,使配置生效

source /etc/bash.bashrc 

最后还要执行更新

sudo updatedb 

至此,opencv配置就结束了

9,测试

进入OpenCV/samples/cpp/example_cmake目录下,运行官方实例

cmake .
make
./opencv_example

效果如下:

10, 用qt测试时有一个问题没有解决,就是每一次都要在qt的工程文件中指明opencv的库的路径


猜你喜欢

转载自blog.csdn.net/wyf826459/article/details/80885316