超詳細Qt5.9.5移植攻略,拿走不謝

導語:

目前啓揚智能默認提供的Qt版本是4.8,但是現在已經發展到最新的5.9版本。當現有版本的Qt庫不能滿足實際開發需求時,則需要進行Qt移植。本文就來介紹下如何將Qt5.9.5移植到ARM開發板上。

 

以啓揚imx6開發板爲例,使用Ubuntu14.04虛擬機作爲移植環境。

下面跟着我左手右手一個慢動作,開始吧!

 

一、準備工作

1、主機環境:Ubuntu14.04;

開發板:啓揚IAC-IMX6-kit;

啓揚IAC-IMX6-Kit開發板

(如果使用的是Ubuntu12.04,需要將gcc升級到4.8以上)

2、官網下載源碼包

  

   下載qt-everywhere-opensource-src-5.9.5.tar.xz,這裏選擇下載的是xz格式的源碼包,而不是將源碼和qtcreator打包好的run文件。因爲試過run文件,一方面文件太大,另一方面安裝得到的源碼包和xz格式的有一些不同,比如找不到qt base,影響到後續的配置,所以最好選擇xz格式。

3、解壓

   tar -zxvf qt-everywhere-opensource-src-5.9.5.tar.xz

4、配置交叉編譯器的路徑

   因爲Qt5.9.5支持C++11,所以編譯器版本需要高於4.8以上,我採用了4.8.3版本編譯器。

   修改~/.bashrc 文件,在系統環境變量PATH中添加交叉編譯器的路徑。(路徑以實際路徑爲準)

export PATH=/home/ubuntu1404/work/arm-2014.05/bin:$PATH

 

執行命令source ~/.bashrc

 

查看交叉編譯器的路徑是否已經添加到系統環境變量PATH中。 
可以查看交叉編譯器的版本號:

arm-none-linux-gnueabi-gcc-v

如果能夠正常顯示出交叉編譯器的版本號,恭喜你,第一步已經成功了!

 

二、Qt5.9.5的交叉編譯

  1. 指定目標平臺的架構和交叉編譯器的類型

   Qt5中針對不同的目標平臺都有相應的配置文件夾,只需修改對應目標平臺文件夾中的配置文件qmake.conf。

cd qt-everywhere-opensource-src-5.9.5

 

vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

 

下面是修改後的qmake.conf,其中的內容需要根據自己的實際情況去修改。

 

這裏修改了兩個地方,一是定義了arm的架構,其中:QT_QPA_PLATFORM是指定QPA平臺的插件,這裏選擇的是linuxfb,參數-O是編譯器提供的優化選項,如-O、-O1、-O2、-O3等,代表不同的優化級別,參數-march後面指定的是目標處理器的架構(可能指定不同的架構會調用不同的指令集,猜的~);另外一個改動的地方就是將下面g++.conf和linux.conf中的參數值中加上了fsl,如arm-none-linux-gnueabi-gcc,這是我選擇的交叉編譯器,可以根據自身的情況修改。

 

2、根據需求配置Qt

 

配置Qt可以通過源碼包中configure腳本來完成,運行configure腳本後會得到makefile文件,然後通過make和make install命令完成編譯和安裝。這裏我編寫了一個腳本來實現配置的步驟。

從shell腳本中可以看到,參數-prefix指定了文件的安裝路徑,我的安裝路徑是/opt/newQt5.9.5_arm/newQt5.9.5_arm_install,參數-xplatform指定了目標平臺爲linux-arm-gnueabi-g++。執行這個腳本後就會得到makefile文件,下一步就可以進行編譯了。

 

3. 編譯和安裝

終於可以編譯了,執行make&&make install命令,然後開始漫長的編譯過程,整個過程持續大概2個小時。

移植所需的文件到ARM中

將編譯安裝得到的lib、plugins拷貝到開發板中,lib中存放的是QT程序運行所需的動態庫文件,plugins中存放的應該是所需的插件。由於U盤掛載比較麻煩,這裏選擇使用scp命令,通過網絡傳輸。

配置開發板環境並運行程序

修改/etc/QtEnv文件,設置開發板的環境變量,文件末尾添加的內容如下:

export LD_LIBRARY_PATH=/opt/Qt5.9.5_arm_install/lib

export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/Qt5.9.5_arm_install/plugins

export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0

export QT_QPA_FONTDIR=/opt/Qt5.9.5_arm_install/lib/fonts

 

4. 編譯輸入法程序

將QtSoftKeyboard2018-03-03.zip拷貝到目錄下解壓

添加qmake到環境變量

export QTEDIR=/opt/newQt5.9.5_arm/newQt5.9.5_arm_install:$QTEDIR

export PATH=/opt/newQt5.9.5_arm/newQt5.9.5_arm_install/bin:$PATH

export LD_LIBRARY_PATH=/opt/newQt5.9.5_arm/newQt5.9.5_arm_install/lib: LD_LIBRARY_PATH

生成Makefile和編譯

    #qmake

    #make

    報錯

    修改PinYinFenCi.cpp文件的42行、88行、117行將toAscii()函數修改爲toLatin1()

    將/bin/目錄下的InputTool和/db/目錄下的pinyin.db拷貝到開發板同一個目錄下

    運行InputTool

 

報錯

 

將/home/ubuntu1404/work/arm-2014.05/arm-none-linux-gnueabi/libc/lib/下的所有文件拷貝

 

到開發板的/lib/目錄下

 

Qt界面不顯示中文

 

將FZYTK.TTF文件拷貝到/opt/Qt5.9.5_arm_install/lib/fonts下沒有fonts需創建

 

警告

解決方法

移植libiconv-1.14

./configure -prefix=$PWD/install -host=arm-none-linux-gnueabi

Make &&make install

將安裝目錄下lib目錄下的preloadable_libiconv.so拷貝到開發板/system/lib目錄下

添加環境變量export LD_PRELOAD=/system/lib/preloadable_libiconv.so

 

至此,Qt移植就已經大功告成了!

你以爲我們提供教程就這些?當然不是了,Qt Creator的安裝配置運行過程繼續瞭解下!

一、安裝Qt creator

安裝步驟

注意點:截圖中的紅色方框內容表示必須點擊或者填寫

將qt-creator-opensource-linux-x86_64-4.3.1.run拷貝到Ubuntu中,運行qt-creator-opensource-linux-x86_64-4.3.1.run。

出現以下界面,點擊Next:

出現以下界面,點擊skip:

出現以下界面,點擊Next:

出現以下界面,選擇安裝路徑,以下是我的安裝路徑,然後點擊Next:

出現以下界面,點擊Next:

出現以下界面,點擊接受協議,然後點擊Next:

出現以下界面,點擊install:

出現以下界面,等待1分鐘左右:

出現以下界面,點擊finish:

出現以下界面,表示安裝成功:

備註:Qt Creator可運行文件在: <安裝目錄>/bin/qtcreator

二、配置Qt Creator

 配置步驟

點擊Tools->Options:

點擊Build & Run 然後點擊Compilers:

點擊Add->GCC->C:

Compiler path 填寫:

/home/ubuntu1404/work/arm-2014.05/bin/arm-none-linux-gnueabi-gcc

然後點擊Apply:

 

點擊Add->GCC->C++:

Compiler path 填寫:

/home/ubuntu1404/work/arm-2014.05/bin/arm-none-linux-gnueabi-g++

然後點擊Apply:

點擊Qt Versions ,然後點擊Add:

選擇如下圖路徑的qmake,然後點擊Apply:

 

 

點擊Debuggers,然後點擊Add:

Name填寫:qt5.9.5-imx6

Path 填寫:

/home/ubuntu1404/work/arm-2014.05/bin/arm-none-linux-gnueabi-gdb

然後點擊Apply

 

點擊Kits,然後點擊Add:

Name填寫:qt5.9.5-imx6

Sysroot填寫:/home/ubuntu1404/work/arm-2014.05/bin

Compiler C 選擇GCC

Compiler C++ 選擇GCC

Debuggers 選擇qt5.9.5-imx6

Qt version 選擇Qt 5.9.5(qt5)

最後點擊OK。

 

配置好後,關閉Qt creator。

三、 運行Qt creator

在終端運行:<安裝目錄>/bin/qtcreator.sh

四、搭建Qt工程

點擊New Project

點擊Application,然後點擊Qt Widgets Application,然後點擊Choose:

Name 填寫: qt-test

Create ir 填寫:/home/ubuntu1404 (備註:我的路徑)

選擇qt5.9.5-imx6,然後點擊Next:

 

 

出現以下界面,點擊Next:

出現以下界面,點擊Finish:

出現以下界面,點擊Forms,然後雙擊mainwindow.ui:

將左邊的Push Buttor 拖拽到右邊的窗口布局上:

右擊窗口布局的PushButton,選擇Go to slot :

 

出現以下界面,點擊clicked(),然後點擊OK :

 

在下圖的mainwindow.cpp中添加頭文件:注意頭文件換成英文雙引號

 

#include <QMessageBox>

#include <qdebug.h>

 

在void MainWindow::on_pushButton_clicked() 函數中添加:

QMessage Boxmessage(QMessageBOX::Warning,"Information”,“Really to clear

data?",QMessageBox::Yes|QMessageBox::No,NULL);

    if (message.exec()==QMessageBox::Yes)

    {

       qDebug()<<"clicked yes\n";

    }

    else

    {

       qDebug()<<"clicked no\n";

}

點擊File,然後點擊Save All:

 

點擊左下角的Run 綠色三角形按鈕,等待十秒左右後,右下角出現綠色橫條,表示IMX6 可執行的Qt程序成功生成。

 

然後就可以嘗試運行準備好的Qt程序了,Qt5中是不用加-qws參數的

Tips:Qt5中不再用到Qt4中的窗口系統qws++,而是使用QPA系統,二者之間的差異還不清楚,但是程序運行時不需要再加上參數-qws了。而這個特性也導致Qt5與Qt4的移植過程有一些區別,這裏記錄一下。


瞭解Qt5.9

      赫爾辛基,2017年6月5日——Qt公司發佈了其跨平臺軟件開發框架Qt的最新版本Qt 5.9。該開發框架能夠幫助企業爲自己的產品帶來高超的用戶體驗,滿足用戶的需求。Qt5.9 得益於C++ 11的強大,帶來了前所未有的性能及穩定性,並且爲您提供長期支持(LTS)。目前,全球數百萬的開發者都在使用Qt技術,包括財富五百強企業前十名中的八位。

       根據Gartner最近發佈的預測,2017年全球使用物聯網的設備達到84億件,比2016年增長31%,並且在2020年有望達到204億件。物聯網已經成爲了全球技術發展方向中市場機會最廣闊的領域。因此,企業及獨立開發者們急切盼望能夠通過方便快捷地創建應用及設備,滿足當前及未來物聯網行業的需求。在Qt 5.9的支持下,企業及獨立開發者們能夠獲得這一跨平臺開發框架的強力支持,爲任何操作系統和設備開發提供功能強大且靈活的軟件。

       Qt公司CTO Lars Knoll表示:“在今天這個萬物互聯、移動爲先的社會裏,客戶的期望值呈指數級增長,幾年前的企業完全無法預測今天的需求。因此,開發者們創造的應用及設備必須滿足甚至超越客戶的期望,以獲得高超的用戶體驗。爲滿足這一需求,開發者們使用的開發框架也必須足夠先進、靈活。Qt 5.9給開發者們提供了他們所需的性能及穩定性,幫助他們在今天高度競爭、應用驅動的經濟環境中脫穎而出。”

  正如Qt的全部應用開發及設備開發工具一樣,Qt 5.9所包含的新功能與高性能均以加速軟件及設備開發爲目的,涵蓋大量行業,包括醫療健康、汽車製造、飛機制造、製造業、家電以及娛樂產品等。

附上Qt移植相關資料:鏈接: https://pan.baidu.com/s/1PJq-h-rCfqVh5h8ARqnYUg 密碼: bfsu

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章