目錄
一、編譯tslib庫
二、移植 tslib 到文件系統(tǒng)
?三、編譯Qt源碼(用于移植到ARM)
四、移植Qt到文件系統(tǒng)
?五、搭建 Qt Creator 交叉編譯環(huán)境
?六、獲得Qt可執(zhí)行文件的另一種方法
要想在ARM平臺上運(yùn)行Qt程序,得滿足以下兩個(gè)點(diǎn):
1、ARM平臺上搭建Qt運(yùn)行環(huán)境
2、獲得通過交叉編譯后的Qt可執(zhí)行文件
一、編譯tslib庫
從網(wǎng)上下載 tslib 源碼壓縮包,發(fā)送到 Ubuntu 中并解壓,進(jìn)入tslib源碼目錄,內(nèi)容如下所示:
?執(zhí)行命令安裝以下軟件:
- sudo apt-get update
- sudo apt-get install autoconf automake libtool
執(zhí)行 autogen.sh 生成 Makefile:
- ./autogen.sh
配置使用的交叉編譯器及 tslib 編譯輸出路徑:
- ./configure --host=arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.
- cache -prefix=/home/xzj/tslib-1.21/arm-tslib
直接執(zhí)行 make 編譯及 make install 安裝:
- make
- make install
安裝完成后在當(dāng)前目錄下生成一個(gè) arm-tslib 目錄。也是我們上面指令的編譯輸出目錄路徑??梢圆榭瓷赡夸浵掠幸韵聝?nèi)容:
二、移植 tslib 到文件系統(tǒng)
我把生成的 arm-tslib 放到了掛載的buildroot文件系統(tǒng)的跟目錄,并改名為了 tslib。(可放在其它目錄了,比如usr/lib,可不改名字,根據(jù)自己喜好,但接下來的環(huán)境變量要填對)
??配置 tslib 的環(huán)境變量
打開文件系統(tǒng)根目錄下的/etc/profile文件,填入以下內(nèi)容:
簡單說明: TSLIB_TSDEVICE //觸摸屏設(shè)備文件名,這個(gè)需要選對 TSLIB_CALIBFILE //校準(zhǔn)的數(shù)據(jù)文件,由ts_calibrate校準(zhǔn)程序生成。 SLIB_CONFFILE //配置文件名。 TSLIB_PLUGINDIR //插件目錄 TSLIB_CONSOLEDEVICE //控制臺設(shè)備文件名 TSLIB_FBDEVICE //設(shè)備名 以上環(huán)境變量在實(shí)際開發(fā)中的實(shí)際配置可以根據(jù)實(shí)際情況決定。而這些指定的設(shè)備節(jié)點(diǎn)一定要和你的開發(fā)板上的/dev目錄下的設(shè)備節(jié)點(diǎn)相對應(yīng)。
可以使用 ts_calibrate 進(jìn)行校驗(yàn)?? ts_test????? 進(jìn)行測試?
?三、編譯Qt源碼(用于移植到ARM)
從網(wǎng)上下載Qt源碼 https://download.qt.io/,我下載的是5.12.9的版本。
?
?放到 ubuntu 并解壓得到 qt-everywhere-src-5.12.9源碼目錄
?修改 qmake.conf,配置相關(guān)的編譯器,默認(rèn)使用arm-linux-gnueabi前綴。
- gedit ./qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
?配置編譯選項(xiàng),輸入./configure -help 指令,查看可配置選項(xiàng),由于配置選項(xiàng)太長,我另寫了一個(gè)腳本來執(zhí)行配置選項(xiàng),名為autoconfig.sh,配置主要指定編譯輸出路徑和功能選擇:
#!/bin/bash
./configure -prefix /home/xzj/tool/qt-everywhere-src-5.12.9/armqt-5.12.9 \
-opensource \
-confirm-license \
-release \
-strip \
-shared \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-c++std c++11 \
--rpath=no \
-pch \
-skip qt3d \
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcanvas3d \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdoc \
-skip qtgamepad \
-skip qtlocation \
-skip qtmacextras \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtremoteobjects \
-skip qtscript \
-skip qtscxml \
-skip qtsensors \
-skip qtspeech \
-skip qtsvg \
-skip qttools \
-skip qttranslations \
-skip qtwayland \
-skip qtwebengine \
-skip qtwebview \
-skip qtwinextras \
-skip qtx11extras \
-skip qtxmlpatterns \
-make libs \
-make examples \
-nomake tools -nomake tests \
-gui \
-widgets \
-dbus-runtime \
--glib=no \
--iconv=no \
--pcre=qt \
--zlib=qt \
-no-openssl \
--freetype=qt \
--harfbuzz=qt \
-no-opengl \
-linuxfb \
--xcb=no \
-tslib \
--libpng=qt \
--libjpeg=qt \
--sqlite=qt \
-plugin-sql-sqlite \
-I/home/xzj/tool/tslib-1.21/arm-tslib/include \
-L/home/xzj/tool/tslib-1.21/arm-tslib/lib \
-recheck-all
給執(zhí)行權(quán)限,執(zhí)行腳本進(jìn)行配置
- chmod +x ./autoconfig.sh
- sudo apt-get install g++ // 配置前請先安裝 g++
- ./autoconfig.sh
配置完成夠開始進(jìn)行編譯和安裝,由于編譯用時(shí)比較久,最好使用多指令同時(shí)運(yùn)行:
- make -j12
- make install
執(zhí)行安裝指令后,會在當(dāng)前目錄生成一個(gè) armqt-5.12.9 文件,配置時(shí)命名的輸出文件:
四、移植Qt到文件系統(tǒng)
把剛才生成的 armqt-5.12.9 放到掛載的 buildroot 文件系統(tǒng)的/opt目錄中:
?要想Qt 程序顯示中文,需把中文字庫放到新建一個(gè)/usr/share/fonts/目錄下。配置 Qt5 的環(huán)境變量,打開文件系統(tǒng)/etc/profile,添加如下內(nèi)容:
注意文件名和路徑
以上就是搭建ARM平臺(開發(fā)板)的Qt運(yùn)行環(huán)境,接下來需要在ubuntu搭建Qt交叉編譯環(huán)境。
?五、搭建 Qt Creator 交叉編譯環(huán)境
從網(wǎng)上下載安裝包安裝 Qt Creator, qt-opensource-linux-x64-5.12.9.run
?下載完成后,給權(quán)限并執(zhí)行安裝:
- chmod u+x qt-opensource-linux-x64-5.12.9.run
- sudo ./qt-opensource-linux-x64-5.12.9.run
接下來就會彈出安裝窗口,就跟在win安裝應(yīng)用一樣了,省略。
安裝完成后, 配置Qt Creator Kits。打開Qt,點(diǎn)擊工具->選項(xiàng)
配置 qmake,qmake在上面編譯Qt源碼后生成的armqt-5.12.9里面
配置 C++編譯器,這里我使用以前安裝的交叉編譯器,我的在ubuntu的/usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++
?配置 Kits,選擇剛才的Qt versions和C++編譯器。
?Qt環(huán)境搭建好了,可以新建一個(gè)項(xiàng)目試試,在新建項(xiàng)目時(shí)的Kits選項(xiàng)記得把剛才添加Kits也勾選上。
??構(gòu)建ARM平臺上的Qt執(zhí)行程序,就選上剛才新添加的Kit,然后點(diǎn)擊構(gòu)建,就會生成一個(gè) build-test-ARM_Qt_5_12_9-Debug 的文件,里面就存放著Qt可執(zhí)行程序,把這個(gè)可執(zhí)行程序發(fā)送到ARM平臺(開發(fā)板),然后直接運(yùn)行就可以了。
?如果想在ubuntu上運(yùn)行,就選擇默認(rèn)的kit,然后直接點(diǎn)擊綠色的三角形運(yùn)行就可以了,同時(shí)會生成一個(gè)build-test-Desktop_Qt_5_12_9_GCC_64bit-Debug 文件,里面的可執(zhí)行文件就是在ubuntu中運(yùn)行的。
?
?六、獲得Qt可執(zhí)行文件的另一種方法
除了上面說的在Qt Creator 中構(gòu)建出可以在ARM平臺上運(yùn)行的Qt程序之外,還有另一種方法也可以得到可以在ARM平臺上運(yùn)行的Qt程序。
進(jìn)入項(xiàng)目的文件夾,直接運(yùn)行qmake,生成 Makefile,再執(zhí)行 make 開始編譯。文章來源:http://www.zghlxwxcb.cn/news/detail-781955.html
- cd test
- /home/xzj/tool/qt-everywhere-src-5.12.9/armqt-5.12.9/bin/qmake
- make
文章來源地址http://www.zghlxwxcb.cn/news/detail-781955.html
到了這里,關(guān)于QT·移植Qt到ARM平臺及搭建Qt交叉編譯環(huán)境的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!