Ubuntu20.04开发环境搭建

Ubuntu20.04开发环境搭建


一、安装Ubuntu20.04

下载Ubuntu镜像,官网地址https://ubuntu.com/download/desktop,下载后直接在VMware15中安装。

1. 显示问题

Ubuntu镜像安装到vmware15后,没有1920x1080分辨率,但是电脑的显示器是1920*1080,无法全屏显示。
解决方法:
① 直接安装vmware-tool即可解决,安装vmware-tool后分辨率会随着窗口的大小进行调整。
② 调整系统设置,执行命令:

#自定义分辨率
cvt 1920 1080
#查看显示器名称
xrandr

38
可以看出我的显示器的名称是Virtual1
执行命令:

sudo xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
sudo xrandr --addmode Virtual1 "1920x1080_60.00"

之后就可以在显示设置中选择1920x1080分辨率,并将上面的命令加在/etc/profile的末尾,如果重启后失效,增加一行xrandr -s 1920x1080

2. 源服务器

选择最佳服务器,或者直接选择国内的服务器,比如清华源http://mirrors.tuna.tsinghua.edu.cn/ubuntu,在安装、更新软件的时候速度更快。
avatar


二、Ubuntu20.04上安装Qt5.12.9

1. 下载Qt安装包

使用清华大学镜像源下载:https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/5.12/5.12.9 直接下载qt-opensource-linux-x64-5.12.9.run

2. 安装Qt

切换到安装包路径,使用sudo chmod +x命令增加安装包的权限后,直接双击安装包。安装过程选择自己需要的组件,一路Next即可。

3. 安装gcc,g++

直接使用以下命令安装

sudo apt update
sudo apt install build-essential

build-essential是Ubuntu的一个软件包组,包括gcc、g++、make等工具
avatar

4. 安装OpenGL库

执行命令:

sudo apt-get install mesa-common-dev

缺少OpenGL库,工程编译会报错
avatar

5. 配置QtCreator

Tools→Options→Kits选择Qt版本,Compilers中选择编译器,Debuggers中选择调试器。
avatar
avatar


三、Ubuntu20.04上安装opencv3.4.9

1. 下载opencv

官网下载:https://opencv.org/releases/page/4/
国内镜像:https://www.bzblog.online/wordpress/index.php/2020/03/09/opencvdownload/
下载压缩包后直接解压出来。
avatar

2. 安装CMake

使用命令安装CMake和CMake界面

sudo apt-get install build-essential cmake
 sudo apt install cmake-qt-gui

安装完成后查看CMake版本
avatar

3. 安装opencv依赖库

//安装jpeg格式图像工具包
sudo apt-get install libjpeg8-dev 
//安装tif格式图像工具包
sudo apt-get install libtiff5-dev 
//安装JPEG-2000图像工具包
sudo apt-get install libjasper-dev 
//安装png图像工具包
sudo apt-get install libpng12-dev
//安装视频I/O包
sudo apt-get install build-essential libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
//安装gtk2.0
sudo apt-get install libgtk2.0-dev

在执行sudo apt-get install libjasper-dev这条指令时可能会遇到libjasper-dev包无法定位的问题,遇到这个问题后需要更新一下Linux的几个配置即可,执行如下指令:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update

在执行安装视频I/O库的时候报错,按照提示执行apt --fix-broken install即可
avatar

4. 使用CMake生成makefile

依赖全部安装完成后,在终端中进入opencv解压缩后的文件夹。然后新建一个编译的目标文件夹并进入,这里以build文件夹为例。终端执行如下指令:

mkdir build
cd build

执行CMake指令

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D WITH_V4L=ON \
-D WITH_QT=ON \
-D WITH_OPENGL=ON ..

如果出现报错,可以双击打开CMakeCache.txt(前提是已经安装cmake-qt-gui),使用CMake带界面工具调整各项设置,比如我在执行cmake指令的时候报错,QT5_DIR找不到,设置正确的QT5_DIR即可。
avatar
avatar
配置好QT5_DIR后,点击“Configure”,成功后“Generate”就可以生成makefile。

5. 编译、安装opencv

在build目录下先后执行命令:

make #编译,时间比较久
sudo make install #安装

6. 系统环境配置

sudo gedit /etc/ld.so.conf.d/opencv.conf
#打开后可能是空文件,在文件内容最后添加
/usr/local/lib

执行如下命令使得刚才的配置路径生效

sudo ldconfig

配置bash,执行命令:

sudo gedit /etc/bash.bashrc 
# 在末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH 

执行如下命令使得刚才的配置bash生效

source /etc/bash.bashrc

7. 在QT中使用opencv

创建Qt Widgets Application,在.pro文件中添加opencv的头文件和库文件的路径
avatar
前面使用cmake编译时使用了勾选了生成opencv_world库,因此这里只需要包含此库即可。opencv_world包含其他所有库的功能,不需要再单独包含其他功能库,缺点是libopencv_world.so库文件比较大。
avatar

在界面中的lable上显示一张图片,代码如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QImage>
#include <QPixmap>
#include <opencv2/opencv.hpp>
using namespace cv;

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    ,ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    Mat img = imread("/home/wangjie/temp/opencv-logo2.png");
    cvtColor(img,img,CV_BGR2RGB);
    QImage image = QImage((const unsigned char *)(img.data),img.cols,img.rows
    img.step,QImage::Format_RGB888);
    ui->label->setPixmap(QPixmap::fromImage(image));
    ui->label->resize(image.size());
    ui->label->show();
}

编译后执行
avatar

至此,Qt和Opencv都在Ubuntu20.04的x64环境下安装并运行成功


四、Ubuntu20.04上交叉编译Qt、opencv

1. 交叉编译工具链

当前架构是X86_64,根据需要下载linaro版本的arm交叉编译工具链。
下载地址:http://releases.linaro.org/components/toolchain/binaries/5.5-2017.10/aarch64-linux-gnu/
avatar
解压后,将/home/wangjie/Packages/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin目录加到PATH变量中,
在/etc/profile中添加新的环境变量:

sudo gedit /etc/profile
#在文件末尾添加:export PATH=$PATH:/home/wangjie/Packages/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin
source /etc/profile #不生效就重启系统

执行echo $PATH查看路径是否添加成功,执行命令aarch64-linux-gnu-g++ -v验证编译器是否安装成功

2. 交叉编译Qt5.12.9

  • 下载
    下载Qt源码qt-everywhere-src-5.12.9.tar.xz Linux压缩包
    源码中qt-everywhere-src-5.12.9/qtbase/mkspecs下,对应的是所有的编译平台,我们只需要修改自己需要的即可,不需要全部配置编译,找到linux-aarch64-gnu-g++,打开qmake.conf,确认里面各项是否正确,这些工具需要和自己的交叉编译工具保持一致,否则编译失败。
    avatar

  • 编译
    进入根目录cd qt-everywhere-src-5.12.9,执行命令:

    ./configure \
    -prefix /home/username/Qt5.12.9/5.12.9/aarch64 \
    -make libs \
    -xplatform linux-aarch64-gnu-g++ \
    -no-opengl \
    -skip qtdeclarative \
    -qt-xcb
    

    -prefix 代表你的安装文件夹
    -xplatform 代表你所制定的编译器
    no-opengl 跳过编译openGL(因为我已经安装了Qt,所以不需要界面)
    -skip qtdeclarative 跳过 qtdeclarative(不跳过,编译出错,出错的原因不清楚)
    -qt-xcb 会生成libqxcb.so,新版改为-xcb,xcb依赖库的版本一定要匹配,不然会报错
    如果有别的需求,可以./configure -help查看具体命令

    make 
    mkdir -p Qt5.12.9/5.12.9/aarch64 #创建安装文件夹
    sudo make install
    
  • 配置Qt,添加交叉编译环境
    打开Qt-Options,查看Compilers中是否自动添加了arm版的编译器。如果没有则需要手动添加
    c++编译器:gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
    c编译器:gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
    avatar
    编译器配置成功后,在Kits中增加arm版本的平台,将刚才配置的c和c++编译器选入其中。
    avatar
    在Qt Versions中选择使用arm工具链编译的qmake
    avatar

  • 验证
    创建Qt工程,选择Kit:Qt 5.12.9 aarch
    avatar
    编译成功后,执行file指令查看生成文件的信息
    avatar

3. 交叉编译opencv

  • cmake设置
    继续使用opencv3.4.9的源代码,在目录下创建build_arm文件夹,cd到build_arm,执行指令:
    sudo cmake -DCMAKE_C_COMPILER=aarch64-linux-gun-gcc -DCMAKE_CXX_COMPILER=aarch64-linux-gun-g++ ../
    
    也可以使用cmake-gui命令进入cmake界面,编译更方便。界面弹出后,第一步设置源码和build路径,然后直接点击Configure
    avatar
    出现CMakeSetup窗口后,选择Specify options for cross-compiling,Next
    avatar
    avatar
    #这三项一定要写对,对应工具链的位置
    C: /home/wangjie/Packages/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
    C++: /home/wangjie/Packages/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
    Target Root: /home/wangjie/Packages/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin
    
    点击Finish,在Search中输入install,修改opencv编译后的安装路径
    avatar
    点击Configure,出现Configuring done后,点击Generate,出现Generating done后,makefile创建成功
    avatar
  • 编译
    执行命令make,期间出现几个报错,记录如下
    错误一:找不到zlib.h
    avatar
    解决方法:找到 3rdparty/libpng/CMakeLists.txt,在ocv_include_directories前面添加 set(ZLIB_INCLUDE_DIRS "/home/wangjie/Packages/opencv-3.4.9/3rdparty/zlib/")
    avatar
    错误二:还是找不到zlib.h的错误,但是报错的文件不同
    avatar
    解决方法:在顶层的CMakeLists.txt里面找到 ocv_include_directories(${OPENCV_CONFIG_FILE_INCLUDE_DIR})不一定在多少行,在这句下一行加ocv_include_directories(./3rdparty/zlib/)
    avatar
    错误三:未定义的引用png_do_expand_palette_rgb8_neon png_init_filter_functions_neon png_do_expand_palette_rgba8_neon png_riffle_palette_neon
    avatar
    解决方法:
    ① 进入到3rdparty/libpng,在CMakeLists.txt最顶端增加:set(ENABLE_NEON ON),经测试此方法无效。
    avatar
    ② 找到文件/opencv-3.4.9/3rdparty/libpng/pngpriv.h,修改部分代码
    if (defined(__ARM_NEON__) || defined(__ARM_NEON)) &&
    //修改为:
    if defined(PNG_ARM_NEON) && (defined(ARM_NEON) || defined(__ARM_NEON)) && \
    
    avatar
    解决以上三个问题,make成功,继续执行sudo make install,编译安装结束。
  • 配置环境
    sudo gedit /etc/ld.so.conf.d/opencv.conf
    #增加下面的路径
    /usr/local/arm/lib
    
    执行如下命令使得刚才的配置路径生效
    sudo ldconfig
    
    配置bash,执行命令:
    sudo gedit /etc/bash.bashrc 
    
    # 在末尾添加
    PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/local/arm/lib/pkgconfig
    export PKG_CONFIG_PATH 
    
    执行如下命令使得刚才的配置bash生效
    source /etc/bash.bashrc
    

五、Ubuntu20.04上安装libusb

  • apt-get安装
    执行命令:

    sudo apt-get install libusb-dev
    sudo apt-get install libusb-1.0-0-dev
    

    libusb.h默认安装在:/usr/include/libusb-1.0
    libusb.so默认安装在:/usr/lib/x86_64-linux-gnu

  • 源代码安装
    下载地址:https://github.com/libusb/libusb/releases/tag/v1.0.24
    使用源码编译arm版本libusb,解压安装包,cd到源文件路径,执行命令:

    # 没有configure文件就先使用下面的命令创建,有就跳过
    autoreconf --install
    
    ./configure --build=i686-linux \
    --host=arm-linux \
    --prefix=/usr/local/arm \
    CC=/home/wangjie/Packages/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc \
    CXX=/home/wangjie/Packages/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ \
    --disable-udev
    

    其中:
    –build=x86_64-linux 表示该软件在x86平台被编译
    –host=arm-linux 表示该软件编译完成后在arm平台上运行
    –prefix 表示该软件的安装目录
    CC,CXX 等于指定了交叉编译使用的C,C++交叉编译器,需要完整路径。
    如果不加最后一行--disable-udev会出现报错:
    安装报错

    编译安装:

    make 
    sudo make install
    

    执行成功,查看/usr/local/arm目录,头文件和库文件已经生成。
    36


六、Ubuntu20.04上安装libevent

下载libevent源码,下载地址:https://libevent.org/

  • x86编译
    解压压缩包libevent-2.1.11-stable.tar.gz,执行下面的命令安装:
    #创建configure
    ./autogen.sh
    #执行configure
    ./configure
    #编译、安装
    make
    sudo make install
    
    libevent头文件默认安装在:/usr/local/include /usr/local/include/event2
    libevent库文件默认安装在:/usr/local/lib
  • 交叉编译
    重新解压一份源代码,不要使用x86已经编译的过的代码继续configure
    ./configure --build=i686-linux \
    --host=arm-linux \
    --prefix=/usr/local/arm \
    CC=/home/wangjie/Packages/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc \
    CXX=/home/wangjie/Packages/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
    
    编译安装:
    make
    sudo make install
    
    执行成功,查看/usr/local/arm目录,头文件和库文件已经生成。
    37

七、Ubuntu20.04上安装Git

  • 安装git
    Ubuntu系统中可直接执行命令:

    sudo apt install git
    

    安装完成后,查看版本
    avatar
    也可自行下载git源码,通过make sudo make install来安装,具体步骤和前面安装Qt,opencv类似,源码安装的优点是可以使用最新版的git。

  • 配置git
    完成安装后就可以开始配置git了,通过下面的两条命令来配置用户名和邮箱(这里的邮箱地址我用的是我的github账号下的邮箱)

    git config --global user.name "youname"
    git config --global user.email "youremail@email.com"
    
  • 创建git仓库
    创建本地git仓库,并拉取github上的代码。创建文件夹,cd进去,执行下面的命令:

    #创建本地仓库
    git init
    #建立到github的远程连接
    git remote add origin https://github.com/github-xxx/resp.git
    #拉取github上的代码,需要输入Username和Password,验证成功后开始拉取代码库
    git pull https://github.com/github-xxx/resp.git
    
posted @ 2021-05-27 22:24  黑夫和惊  阅读(1975)  评论(0编辑  收藏  举报