<strike id="kiyse"></strike>
  • <tr id="kiyse"></tr>
  • <strike id="kiyse"></strike><samp id="kiyse"><tbody id="kiyse"></tbody></samp>
    <strike id="kiyse"><s id="kiyse"></s></strike>
    <tr id="kiyse"></tr>
    <noframes id="kiyse"><code id="kiyse"></code></noframes>
    <th id="kiyse"></th>
    <samp id="kiyse"></samp>
  • <th id="kiyse"><s id="kiyse"></s></th>
  • ubuntu+Qt開發環境搭建

     2023-3-1     作者:楊陽         

    1、安裝說明


    通過在虛擬機+Ubuntu系統下安裝Qt開發工具QtCreator,可以進行Qt相關的應用開發,并將應用程序運行于英創工控主板之上。QtCreator同時也可以支持非Qt的C/C++程序的開發。所以用戶只需要在eclipse和QtCreator中選擇一種進行環境搭建。


    開發環境Eclipse(Linux版本)QtCreator(Linux版本)
    支持程序類型C/C++C/C++,Qt程序


    關于虛擬機+Ubuntu系統的安裝,可以參考《ubuntu+eclipse開發環境搭建》一文(只需要參考Ubuntu系統安裝的部分)。


    本文適用于ESM6800E/H、ESM6802、ESM7000系列、ESM8000系列工控主板,主要介紹了windows下虛擬機+ubuntu中Qt開發環境搭建的詳細過程,包括交叉編譯工具鏈的安裝,Qt工具安裝以及配置。


    本文所使用的安裝包:

    1、ESM7000-toolchain-x86_64.sh(交叉工具鏈安裝包),本文以ESM7000為例,其他主板的交叉工具鏈安裝包可以參考下面的表格:

    主板型號工具鏈安裝包
    ESM6800E/HESM6800-toolchain-x86_64.sh
    ESM6802ESM6802-toolchain-x86_64.sh
    ESM7000系列ESM7000-toolchain-x86_64.sh
    ESM8000系列ESM8000-toolchain-x86_64.sh


    2、qt-creator-opensource-linux-x86_64-4.15.2.run(QtCreator安裝包),安裝的QtCreator僅僅是一個IDE集成環境,編程所使用的Qt庫已經集成在了安裝好的編譯工具中。因此用戶也可以使用別的QtCreator版本,不會對開發程序有任何影響。而已經安裝過QtCreator的用戶,就不用再重新安裝了,可以直接跳到第4步,按照說明添加一套主板使用的編譯環境。QtCreator安裝包的下載地址:https://download.qt.io/official_releases/qtcreator/


    以上安裝文件均在產品光盤的“工具”文件夾中。


    2、交叉編譯工具鏈安裝


    1、打開VMvare,啟動ubuntu,然后將前面提到的兩個安裝包復制到ubuntu的個人用戶目錄中,即/home/<用戶名>,本文中為/home/emtronix,如下圖:

    1.png

      

    2、建立/home/emtronix/tools/esm7000文件夾用于安裝交叉工具鏈(本文以/home/emtronix/tools/esm7000為例,客戶可以根據習慣自行建立文件夾),然后在命令行中進入到存放安裝文件的目錄中,輸入命令:

    $ ./ ESM7000-toolchain-x86_64.sh

    啟動交叉工具鏈的安裝后,首先需要手動輸入安裝路徑,指定到剛剛新建的目錄中即可(本文是/home/emtronix/tools/esm7000),之后輸入“y”以確認安裝,如下圖:

    2.png


    3、QtCreator安裝


    安裝QtCreator有兩種方法,第一種是使用Ubuntu系統自帶的QtCreator軟件,這種方法比簡單方便,但是QtCreator軟件本身的版本可能有一定滯后型,不過不會影響開發。安裝方法如下:


    1、在終端輸入命令,首先安裝依賴的軟件,然后安裝QtCreator:

    $ sudo apt-get update

    $ sudo apt-get upgrade

    $ sudo apt-get install make build-essential

    $ sudo apt-get install libxcb-xinerama0

    $ sudo apt-get install qtcreator


    如下圖:

    3.png


    安裝完成后,在終端輸入qtcreator就可以啟動QtCreator軟件了。


    第二種方法是針對想使用最新版本的QtCreator開發的用戶,可以在網站https://download.qt.io/official_releases/qtcreator/下載最新版本的安裝包,如果下載較慢,可以采用下載網站中提供的國內鏡像下載網址。本文使用4.15.2版本為例(安裝包為qt-creator-opensource-linux-x86_64-4.15.2.run),安裝方法如下:


    1、在終端輸入命令,首先還是安裝依賴的軟件,然后進入到存放QtCreator安裝包的目錄中,并啟動QtCreator的安裝:

    $ sudo apt-get update

    $ sudo apt-get upgrade

    $ sudo apt-get install make build-essential

    $ sudo apt-get install libxcb-xinerama0

    $ ./qt-creator-opensource-linux-x86_64-4.15.2.run

    如下圖:

    4.png


    2、安裝程序啟動后,會自動聯網登錄Qt賬戶,根據提示輸入或者注冊賬戶即可。如果網絡無法連接,會等待超時后跳過登錄賬戶的步驟,如下圖:

    5.png

      

    3、等待Qt賬戶驗證成功,繼續點擊“next”,直到輸入安裝路徑的頁面,用戶可以根據習慣自行設置,本文使用的安裝路徑為/home/emtronix/tools/qtcreator-4.15.2,如下圖:

    7.png


    4、選擇需要安裝的組件,按照默認配置即可。如下圖:

    8.png


    5、然后繼續“next”,直到開始安裝,如下圖:

    9.png


    6、安裝完成以后,/home/emtronix/tools文件夾下可以看到“esm7000”和“qtcreator-4.15.2”兩個文件夾,如下圖(客戶可以在自己指定的安裝文件夾中看到這兩個文件夾):

    11.png


    其中,我們后面要用到的qtcreator位于/home/emtronix/tools/qtcreator-4.15.2/bin/文件夾下,如下圖:

    10.png


    4、QtCreator設置


    交叉編譯工具鏈和Qt安裝完成以后,首先需要設置環境變量,然后啟動qtcreator配置相關選項。


    啟動QtCreator


    1、首先需要導入交叉工具鏈的環境變量,進入到交叉工具鏈的安裝路徑中:

    $ cd ~/tools/esm7000

    ~代表用戶目錄/home/emtronix,本文以/home/emtronix/tools/esm7000為例,客戶請進入自己的交叉編譯工具鏈安裝目錄。

    使用source命令導入environment開頭的配置文件,這個文件包含了交叉工具鏈正常運行所需的環境變量:

    $ source environment-setup-cortexa7hf-neon-poky-linux-gnueabi

    環境變量配置文件都放在交叉工具鏈的安裝目錄下,并且以environment開頭。各個主板型號對應的環境變量配置文件可參考下表:

    主板型號對應環境變量配置文件
    ESM6800E/Henvironment-setup-cortexa7hf-neon-poky-linux-gnueabi
    ESM6802environment-setup-cortexa9hf-neon-poky-linux-gnueabi
    ESM7000系列environment-setup-cortexa7hf-neon-poky-linux-gnueabi
    ESM8000系列environment-setup-aarch64-poky-linux


    2、導入環境變量后,進入到QtCreator的安裝路徑下,啟動QtCreator:

    $ cd ~/tools/qtcreator-4.15.2/bin/

    $ ./qtcreator

    如下圖:


    12.png

    注:每次運行Qtcreator之前都必須重復這一步設置環境變量(設置交叉編譯工具鏈的指向)。


    配置QtCreator


    1、啟動Qtcreator以后打開“Tools”-“Options”,如下圖:

    ubuntu+Qt開發環境搭建.png

      

    2、選擇左邊的“Kits”-“Compilers”,點擊“Add”-“GCC”-“C”添加交叉編譯工具,如下圖:

    image.png


    繼續設置新添加的C編譯工具,將“Name”填寫為“esm7000-GCC”(用戶可自行修改),并選擇“Compiler path”為交叉工具鏈安裝目錄下:“sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc”(用戶需要根據實際安裝的目錄選擇),然后點擊“Apply”保存設置,如下圖:

    13.png

     

    不同主板的交叉工具鏈對應的C編譯工具可參考下表:

    主板型號對應C編譯工具(相對交叉工具鏈安裝路徑)
    ESM6800E/Hsysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc
    ESM6802sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc
    ESM7000系列sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc
    ESM8000系列sysroot/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc

     

    3、選擇左邊的“Kits”-“Compilers”,點擊“Add”-“GCC”-“C++”添加交叉編譯工具,如下圖:

    image.png


    繼續設置新添加的C++編譯工具,“Name” 填寫為“esm7000-G++”(用戶可自行修改),并選擇“Compiler path”為交叉工具鏈安裝目錄下:“sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++”,然后點擊“Apply”保存設置,如下圖:

    14.png



    不同主板的交叉工具鏈對應的C++編譯工具可參考下表:

    主板型號對應C++編譯工具(相對交叉工具鏈安裝路徑)
    ESM6800E/Hsysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++
    ESM6802sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++
    ESM7000系列sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++
    ESM8000系列sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-g++


    4、選擇左邊的“Kits”-“Qt Versions”下的“Add”添加交叉工具鏈中的qmake,選擇交叉工具鏈安裝目錄下的“sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake”。其中“Version name”命名為“ESM7000-qt5”(用戶可自行修改),點擊“Apply”保存Qt Versions設置,如下圖如下圖:

    15.png


    不同主板的交叉工具鏈對應的qmake路徑可參考下表:

    主板型號對應的qmake路徑(相對交叉工具鏈安裝路徑)
    ESM6800E/Hsysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake
    ESM6802sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake
    ESM7000系列sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake
    ESM8000系列sysroots/x86_64-pokysdk-linux/usr/bin/qmake

      

    5、選擇左邊的“Kits”-“Kits”頁面下的“Add”,增加一組主板專用的編譯配置,具體設置如下:

    設置項設置內容說明
    nameesm7000新建的Kits名稱,客戶可自行取名
    Compiler CESM7000-GCC配置C編譯工具
    Compiler C++ESM7000-G++配置C++編譯工具
    Qt versionESM7000-qt5選擇Qt版本

      

    以上設置均對應前面幾步設置的名稱,實際設置時用戶選擇自己填寫的名稱即可,如下圖所示:

    16.png

    這一步完成以后,開發環境設置即進行完畢,之后就可以用qtcreator進行開發了。


    在較高版本的QtCreator(目前測試在4.15版本及其以上)中,編輯界面的代碼可能會有很多報錯和警告的信息,可以選擇QtCreator中的Help->About Plugins,如下圖:

    image.png


    然后取消其中的ClangCodeModel項,重啟一次QtCreator即可:

    17.png

      

    需注意的是,每一次啟動qtcreator之前,都必須重復步驟4.1,進行環境變量設置(設置交叉編譯工具鏈的指向)。


    開發實例


    非QT程序


    1、啟動Qtcreator,選擇“File”-“New File or Project”新建工程,選擇Non-Qt Project下的”Plain C++ Application”命令行程序。


    ubuntu+Qt開發環境搭建.png

      

    2、依次設置好工程名和路徑,設置編譯器為qmake,選擇設置的kit(見文章4.5節),點擊finish,創建好新工程(以上設置均可選擇默認設置)。

    ubuntu+Qt開發環境搭建.png

      

    3、選擇“Build”-“Build Project”,編譯工具,即可在設定的編譯目錄中看到編譯好的可執行程序。


    4、參考開發光盤中例程,以串口例程step2_serialtest為例,拷貝main函數代碼到工程中,工程中添加頭文件“serial.h”和源文件“serial.cpp”,因為工程里用到了pthread庫中的接口函數,所以需要在工程中添加pthread庫。

    ubuntu+Qt開發環境搭建.png

      

    5、參考開發光盤中《使用必讀》,將編譯好程序放置到工控主板掛載目錄中運行,可以看到工控主板打印的程序信息(可以短接串口ttyS2收發腳自發自收測試)。


    qt界面程序


    1、啟動Qtcreator,選擇“File”-“New File or Project”新建工程,選擇”Qt Console Application”界面程序。

    ubuntu+Qt開發環境搭建.png

      

    2、依次設置好工程名和路徑,設置編譯器為qmake,選擇設置的kit(見文章4.5節),點擊finish,創建好新工程(以上設置均可選擇默認設置)。

    ubuntu+Qt開發環境搭建.png

      

    3、點擊Forms中.ui文件,即可進入Design界面。

    ubuntu+Qt開發環境搭建.png

      

    4、拖動控件,設置相應控件參數。以串口例程為例: 

    ubuntu+Qt開發環境搭建.png

      

    5、添加控件的響應代碼,以“打開”按鈕為例:

    該按鈕名為pushButton_2的QpushButton

    ubuntu+Qt開發環境搭建.png

    右鍵點擊按鈕,選擇“Go to slot”

    ubuntu+Qt開發環境搭建.png

    選擇事件,這里選按鈕的點擊事件,即可編輯響應函數。

    void MainWindow::on_pushButton_2_clicked()
    {
        int     port;
        int     baud;
        char    databits;
        char    stopbits;
        char    parity;
        port = ui->comboBox->currentIndex()+1;
        switch (ui->comboBox_2->currentIndex()) {
        case 0:
            baud = 4800;
            break;
        case 1:
            baud = 9600;
            break;
        case 2:
            baud = 115200;
            break;
        default:
            baud = 115200;
            break;
        }
        switch (ui->comboBox_3->currentIndex()) {
        case 0:
            databits = '7';
            break;
        case 1:
            databits = '8';
            break;
        default:
            databits = '8';
            break;
        }
        switch (ui->comboBox_4->currentIndex()) {
        case 0:
            stopbits = '1';
            break;
        case 1:
            stopbits = '2';
            break;
        default:
            stopbits = '1';
            break;
        }
        switch (ui->comboBox_5->currentIndex()) {
        case 0:
            parity = 'O';
            break;
        case 1:
            parity = 'E';
            break;
        default:
            parity = 'N';
            break;
        }
        m_Serial.m_ExitThreadFlag = 0;
        int iRet;
        iRet = m_Serial.OpenPort(port, baud, databits, stopbits, parity);
        if(iRet<0)
        {
            printf("serial open fail\n");
            return;
        }
        m_Serial.m_ExitThreadFlag = 0;
        m_Serial.m_pThread = new Thread;
        m_Serial.m_pThread->m_pSer = &m_Serial;
        connect(m_Serial.m_pThread, SIGNAL(RevSignal(char*,int)), this, SLOT(RevSlot(char*,int)));
        m_Serial.m_pThread->start();
        ui->pushButton_2->setEnabled(false);
        ui->pushButton_3->setEnabled(true);
    }


    編輯完代碼后,點擊build,編譯好程序。


    6、將編譯好程序放置到工控主板掛載目錄中運行,即可調試帶界面程序。


    示例程序在光盤中,也可聯系英創工程師獲得。

    精品不卡一区二区| 久久99精品国产麻豆蜜芽| 久久中文字幕2021精品| 精品特级一级毛片免费观看| 国产成人精品亚洲2020| 久久精品国产精品亚洲艾 | 国产精品小黄鸭一区二区三区| 国产精品福利一区二区久久| 久久er热视频在这里精品| 国产精品手机在线观看你懂的| 无码人妻精品一区二区三区9厂 | 国内精品久久久久影视| 国产91久久精品一区二区| 久久精品国产亚洲香蕉| 国精品产露脸自拍| 亚洲国产综合精品中文字幕 | 97精品在线观看| 久久国产乱子伦精品免费不卡| CAOPORN国产精品免费视频| 高清在线亚洲精品国产二区| 久久国产精品99国产精| 97人妻无码一区二区精品免费| 中文精品久久久久国产网址| 久久91精品国产99久久yfo| 国产自偷亚洲精品页65页| 久久国产精品波多野结衣AV| 成人国产精品高清在线观看| 国产热re99久久6国产精品| mm1313亚洲国产精品无码试看| 亚洲中文精品久久久久久不卡| 精品综合久久久久久98| 亚洲精品无码久久久久久久| 人妻少妇精品视中文字幕国语 | 国产精品66在线观看| 精品久久久中文字幕一区| 午夜精品久久久久久久99蜜桃| 国产毛片片精品天天看视频| 国产精品久久成人影院| 久久国产亚洲精品| 中文字幕av日韩精品一区二区| 国产精品久久婷婷六月丁香|