背景
在工程开发和科研中,常常会遇到开源代码对库版本或者编译器的要求,例如C++11,C++17,opencv3.2.0,opencv4.5.1。在linux中安装一个库的其余版本时常常会把从前已安装的库覆盖掉,所以需要解决版本共存的问题。
写在前面
安装opencv,需要提前安装几个包!!
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config
参考文章:https://blog.csdn.net/public669/article/details/99050101
可能用到的包
ippicv_linux_20151201 网络不佳安装过程无法下载,可以手动安装
百度网盘链接:https://pan.baidu.com/s/1rhJOVj2XyHKJj3ABX6ifmw提取码:51lg
参考文章:https://blog.csdn.net/studyvcmfc/article/details/124100939
下载你需要的库
例如:opencv-3.2.0: https://github.com/opencv/opencv/archive/refs/tags/3.2.0.tar.gz
创建安装目录
在编译工程时会遇到很多不同的版本库,所以我专门建立一个文件夹做我的安装目录,可以根据自己的需求选择文件夹
cd /home/yuanshuang
mkdir myPack
解压文件到安装目录
先把将压缩包复制到myPack里,然后执行下面指令解压
//opencv-3.2.0.tar.gz
cd myPack
tar -zxvf opencv-3.2.0.tar.gz
切换到解压文件夹下,创建需要的文件夹
cd opencv-3.2.0
mkdir release
cd release
mkdir installed
installed文件夹中的就是我们安装的opencv3.2.0库
cmake编译安装
//此时仍然在release文件目录下
cmake -D CMAKE_BUILD-TYPE="Release" -D CMAKE_INSTALL_PREFIX=/home/yuanshuang/myPack/opencv-3.2.0/release/installed -D CMAKE_CXX_STANDARD=11 ..
make
make install
注:在一些工程中可能是使用C++11或者其他标准编写的,如若在写CmakeLists.txt时没有指定C++编译标准,则cmake会使用默认的标准编译,例如C++17,此时你需要在执行cmake时指定编译标准,例如: yuanshuang@ubuntu:$cmake -D CMAKE_CXX_STANDARD=11
-D后跟一个变量可以对变量赋值。eg: -D CMAKE_CXX_STANDARD=11表示使用C++11标准编译
结尾
完成了上述步骤opencv就安装完了。在实际应用时,写CmakeLists.txt还指定包的安装路径
set(CMAKE_PREFIX_PATH "/home/yuanshuang/myPack/opencv-3.2.0/release/installed/")
FIND_PACKAGE(OpenCV 3.2.0 REQUIRED)