由于对ubuntu系统没有什么深入的理解,导致在安装一些软件时出现各种问题,因此从头配置基本开发环境,总结各种踩坑经历,避免再次陷入坑中。
由于ubuntu官方支持的cmake最高版本为3.10,因此直接通过apt-get 无法安装最新版本。这里建议在cmake官网上下载编译好的发行版tar文件,下载后解压到你想要放置cmake文件夹的地方,如主目录。解压后的文件夹里有bin,doc,man,share四个文件夹,其中bin文件夹里就是可用的cmake二进制文件。然后将bin文件夹添加到系统路径,在.bashrc文件最后加入
export PATH=$PATH:~/cmake-3.14.7-Linux-x86_64/bin
然后
source ~/.bashrc
cmake --version
发现已经生效
这样安装的好处在于后续可以更改cmake版本,便于管理。
这里介绍多版本cuda和cudnn的安装及管理。首先下载对应的cuda和cudnn包,这里建议下载cuda的.run文件进行安装,便于设置安装路径和多版本管理。
运行.run文件
sudo sh cuda_10.1.243_418.87.00_linux.run
按空格跳过介绍,接受协议,按照提示进行
选择安装驱动时,如果现有驱动版本高于要安装的版本,就可以不用安装。系统安装的驱动可以在软件和更新那个应用里查看,如果当前选择的是Nouveau驱动,则需要禁用他才能安装nivida的驱动。这里以不安装驱动为例继续安装cuda
===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-10.1/
Samples: Installed in /home/, but missing recommended libraries
安装好后得添加路径,在.bashrc中加入
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
注意这里用的是cuda而不是cuda-10.1,cuda是创建的cuda-10.1的软链接,可用于切换版本
接下来安装cudnn,同样下载好压缩包,解压后里面有一个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 /usr/local/cuda/lib64/libcudnn*
输入以下命令查看cuda安装情况
nvcc --version
nvidia-smi
接下来安装另一个版本。同样执行.run文件,在安装驱动时选择不,在建立软链接时也选不
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: n
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n
这里的软链接可以后面自己更改。然后同样的复制cudnn文件到cuda
sudo cp cuda/include/cudnn*.h /usr/local/cuda-10.0/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.0/lib64
sudo chmod a+r /usr/local/cuda-10.0/include/cudnn*.h /usr/local/cuda-10.0/lib64/libcudnn*
注意这里的路径是具体的cuda-10.0。
上述操作完成后安装工作就已经完成了。下面开始切换版本。
查看当前cuda版本
nvcc --version
输出为
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243
然后切换
sudo rm -rf /usr/local/cuda
sudo ln -s /usr/local/cuda-10.0/ /usr/local/cuda
nvcc --version
输出为
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130
切换成功
同样安装多个版本的opencv。这里注意一点,opencv在编译的时候有cuda的选项,所以如果切换cuda后可能会造成一些问题。
在官网上下载对应的release包,这里以opencv4.1.1为例,然后在github上下载对应版本的contrib包,你也可以选择不安装contrib。
安装依赖
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
解压opencv和contrib,进入解压的opencv目录
cd opencv-4.1.1
mkdir build
cd build
mkdir installed
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=~/opencv/opencv-4.1.1/build/installed -D OPENCV_GENERATE_PKGCONFIG=ON -D WITH_CUDA=ON -D WITH_OPENGL=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib-4.1.1/modules ..
make -j7
sudo make install
注意CMAKE_INSTALL_PREFIX为安装路径,OPENCV_EXTRA_MODULES_PATH为contrib包里的moudles文件夹路径。
这个时候installed文件夹里已经产生了所需的文件。接下来配置环境。opencv.pc是重要的配置文件,在installed/lib/pkgconfig文件夹里,不过里面是opencv4.pc,需要重命名为opencv.pc。
#重命名
sudo mv ~/opencv/opencv-4.1.1/build/installed/lib/pkgconfig/opencv4.pc ~/opencv/opencv-4.1.1/build/installed/lib/pkgconfig/opencv.pc
在.bashrc文件里添加
export PKG_CONFIG_PATH=~/opencv/opencv-4.1.1/build/installed/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/opencv/opencv-4.1.1/build/installed/lib
然后
source ~/.bashrc
pkg-config --modversion opencv
输出为4.1.1配置完成
同理的安装方式,不过在安装cuda支持时好像出了一些问题,还没有解决,就暂且不用cuda,其他的配置一样
只需修改PKG_CONFIG_PATH和LD_LIBRARY_PATH为所选的版本即可
在建立c++工程时,编写cmake文件时需要找到所需版本对应的OpenCVConfig.cmake文件,如下
cmake_minimum_required(VERSION 2.8)
set(OpenCV_DIR "~/opencv-3.4.1/build")
project(test)
find_package(OpenCV REQUIRED)
TensorRT的安装推荐使用tar文件进行安装,便于多版本管理。
不同版本的TensorRT对cuda和cudnn版本的要求不一样,在官网下载好tar包后解压,文件名里有相应的cuda和cudnn版本。解压好的文件夹里已经有可以使用的文件了,只需配置环境变量。
在.bashrc文件中添加lib路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/TensorRT/TensorRT-7.0.0.11.Ubuntu-18.04.x86_64-gnu.cuda-10.0.cudnn7.6/TensorRT-7.0.0.11/lib
接下来安装一些python环境,可选安装。进入tensorRT文件夹
cd TensorRT-7.0.0.11/python
ls
sudo pip3 install tensorrt-7.0.0.11-cp36-none-linux_x86_64.whl
cd TensorRT-7.0.0.11/uff
sudo pip3 install uff-0.6.5-py2.py3-none-any.whl
cd TensorRT-7.0.0.11/graphsurgeon
sudo pip3 install graphsurgeon-0.4.1-py2.py3-none-any.whl
测试安装,进入sample文件夹
cd sample
make
能成功make就基本安装成功了,可以试着跑跑示例代码,看看能不能运行
同样的步骤,解压就行,这里不添加lib路径。
版本的管理在于修改 LD_LIBRARY_PATH,只需要修改成对应的版本即可
后面具体开发应用后面再更