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
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM