https://blog.csdn.net/vickycheung3/article/details/82182136 目前啟揚智能默認提供的Qt版本是4.8,但是現在已經發(fā)展到最新的5.9版本。當現有版本的Qt庫不能滿足實際開發(fā)需求時,則需要進行Qt移植。本文就來介紹下如何將Qt5.9.5移植到ARM開發(fā)板上。
以啟揚imx6開發(fā)板為例,使用Ubuntu14.04虛擬機作為移植環(huán)境。 下面跟著我左手右手一個慢動作,開始吧!
一、準備工作 1、主機環(huán)境:Ubuntu14.04; 開發(fā)板:啟揚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,影響到后續(xù)的配置,所以最好選擇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 文件,在系統(tǒng)環(huán)境變量PATH中添加交叉編譯器的路徑。(路徑以實際路徑為準) export PATH=/home/ubuntu1404/work/arm-2014.05/bin:$PATH
執(zhí)行命令source ~/.bashrc
查看交叉編譯器的路徑是否已經添加到系統(tǒng)環(huán)境變量PATH中。 arm-none-linux-gnueabi-gcc-v 如果能夠正常顯示出交叉編譯器的版本號,恭喜你,第一步已經成功了!
二、Qt5.9.5的交叉編譯
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是編譯器提供的優(yōu)化選項,如-O、-O1、-O2、-O3等,代表不同的優(yōu)化級別,參數-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++。執(zhí)行這個腳本后就會得到makefile文件,下一步就可以進行編譯了。
3. 編譯和安裝 終于可以編譯了,執(zhí)行make&&make install命令,然后開始漫長的編譯過程,整個過程持續(xù)大概2個小時。 移植所需的文件到ARM中 將編譯安裝得到的lib、plugins拷貝到開發(fā)板中,lib中存放的是QT程序運行所需的動態(tài)庫文件,plugins中存放的應該是所需的插件。由于U盤掛載比較麻煩,這里選擇使用scp命令,通過網絡傳輸。 配置開發(fā)板環(huán)境并運行程序 修改/etc/QtEnv文件,設置開發(fā)板的環(huán)境變量,文件末尾添加的內容如下: 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到環(huán)境變量 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拷貝到開發(fā)板同一個目錄下 運行InputTool
報錯
將/home/ubuntu1404/work/arm-2014.05/arm-none-linux-gnueabi/libc/lib/下的所有文件拷貝
到開發(fā)板的/lib/目錄下
Qt界面不顯示中文
將FZYTK.TTF文件拷貝到/opt/Qt5.9.5_arm_install/lib/fonts下沒有fonts需創(chuàng)建
警告 解決方法 移植libiconv-1.14 ./configure -prefix=$PWD/install -host=arm-none-linux-gnueabi Make &&make install 將安裝目錄下lib目錄下的preloadable_libiconv.so拷貝到開發(fā)板/system/lib目錄下 添加環(huán)境變量export LD_PRELOAD=/system/lib/preloadable_libiconv.so
至此,Qt移植就已經大功告成了! 你以為我們提供教程就這些?當然不是了,Qt Creator的安裝配置運行過程繼續(xù)了解下! 一、安裝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。 在終端運行:<安裝目錄>/bin/qtcreator.sh 點擊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 可執(zhí)行的Qt程序成功生成。
然后就可以嘗試運行準備好的Qt程序了,Qt5中是不用加-qws參數的 Tips:Qt5中不再用到Qt4中的窗口系統(tǒng)qws++,而是使用QPA系統(tǒng),二者之間的差異還不清楚,但是程序運行時不需要再加上參數-qws了。而這個特性也導致Qt5與Qt4的移植過程有一些區(qū)別,這里記錄一下。 了解Qt5.9 赫爾辛基,2017年6月5日——Qt公司發(fā)布了其跨平臺軟件開發(fā)框架Qt的最新版本Qt 5.9。該開發(fā)框架能夠幫助企業(yè)為自己的產品帶來高超的用戶體驗,滿足用戶的需求。Qt5.9 得益于C++ 11的強大,帶來了前所未有的性能及穩(wěn)定性,并且為您提供長期支持(LTS)。目前,全球數百萬的開發(fā)者都在使用Qt技術,包括財富五百強企業(yè)前十名中的八位。 根據Gartner最近發(fā)布的預測,2017年全球使用物聯網的設備達到84億件,比2016年增長31%,并且在2020年有望達到204億件。物聯網已經成為了全球技術發(fā)展方向中市場機會最廣闊的領域。因此,企業(yè)及獨立開發(fā)者們急切盼望能夠通過方便快捷地創(chuàng)建應用及設備,滿足當前及未來物聯網行業(yè)的需求。在Qt 5.9的支持下,企業(yè)及獨立開發(fā)者們能夠獲得這一跨平臺開發(fā)框架的強力支持,為任何操作系統(tǒng)和設備開發(fā)提供功能強大且靈活的軟件。 Qt公司CTO Lars Knoll表示:“在今天這個萬物互聯、移動為先的社會里,客戶的期望值呈指數級增長,幾年前的企業(yè)完全無法預測今天的需求。因此,開發(fā)者們創(chuàng)造的應用及設備必須滿足甚至超越客戶的期望,以獲得高超的用戶體驗。為滿足這一需求,開發(fā)者們使用的開發(fā)框架也必須足夠先進、靈活。Qt 5.9給開發(fā)者們提供了他們所需的性能及穩(wěn)定性,幫助他們在今天高度競爭、應用驅動的經濟環(huán)境中脫穎而出。” 正如Qt的全部應用開發(fā)及設備開發(fā)工具一樣,Qt 5.9所包含的新功能與高性能均以加速軟件及設備開發(fā)為目的,涵蓋大量行業(yè),包括醫(yī)療健康、汽車制造、飛機制造、制造業(yè)、家電以及娛樂產品等。 獲取Qt移植相關資料,關注微信公眾號“啟揚智能ARM嵌入式開發(fā)”,回復關鍵字“qt”即可。 |
|
來自: XeonGate > 《QT開發(fā)環(huán)境》