前言
講下整個項目流程,我們的目標是把qt編出來程序放在arm開發(fā)板上面跑,首先下載QT源碼和tslib源碼(QT源碼編譯和QT程序運行需要tslib庫的支持),在虛擬機里使用交叉編譯將QT源碼編譯安裝,會生成arm環(huán)境的庫文件和qmake,然后在虛擬機里安裝qt的Linux版本,安裝好后配置qt的編譯環(huán)境,將編譯器改成交叉編譯器,添加arm環(huán)境的qmake即可。接下來隨便建個qt工程,用arm編譯環(huán)境編出程序,將程序放入arm開發(fā)板,這個時候還不能運行,需要將前面編譯出來的qt和tslib的庫文件也放到開發(fā)板,最后設置好環(huán)境變量,做完觸控校準就可以運行qt程序了。
源碼下載
QT源碼和QT軟件下載
Index of /archive/qt
選擇好適當?shù)陌姹?,點進去,其中single文件下是QT源碼,我這里使用的是版本是QT5.9.6
如果不太清楚如何在虛擬機安裝QT可參考我的這篇文章
linux環(huán)境下安裝QT超詳細_linux qt_yuansec的博客-CSDN博客
tslib源碼下載
?https://gitlab.com/tslib/tslib/-/archive/1.4/tslib-1.4.tar.gz?
這里使用的是1.4版本
如果不想編譯源碼,我將已經(jīng)編好了的tslib源碼和qt源碼的庫文件放在了我的gitee,可直接下載使用
qt移植arm: linux下qt搭建交叉編譯環(huán)境,且在arm環(huán)境運行程序 (gitee.com)
交叉編譯器下載
我使用的交叉編譯器是arm-none-linux-gnueabi-gcc,使用的是linux 解壓版2014.05-29版本
【ARM-Linux開發(fā)】arm-none-Linux-gnueabi-gcc下載安裝 - ZhangPYi - 博客園 (cnblogs.com)
不會安裝的可以參考我的這篇文章
ubuntu安裝交叉編譯器arm-linux-gcc_yuansec的博客-CSDN博客_arm gcc4.6.4
源碼編譯
這里就不講tslib的編譯了,這個比較簡單,你可以直接用我編譯好的,也沒有影響(不過要確保交叉編譯器一致的情況下才能使用,我用的arm-none-linux-gnueabi-gcc)
重點講一下qt源碼的編譯,在根目錄下創(chuàng)建一個文件夾 /opt,將下好的qt源碼包復制到這個目錄下解壓出來,為什么不能直接放桌面呢,因為qt源碼所在目錄不能包含中文,當然如果你的桌面不包含中文,那就可以放桌面編譯
接著進入解壓出來的源碼目錄,找到qtbase/mkspecs/目錄下的linux-arm-gnueabi-g++文件夾
將其復制一份,命名為arm-none-linux-gnueabi-g++(你所使用的交叉編譯器)
sudo cp -r linux-arm-gnueabi-g++ arm-none-linux-gnueabi-g++
進入復制出來的的這個文件夾,找到qmake.conf這個文件夾,使用記事本打開,檢查一下里面所用的編譯器是不是變成了和你使用的交叉編譯器一致
?做完后就可以進行裁剪了
在這之前先在/opt目錄下建一個文件夾qt5(編譯后生成庫的文件目錄)
再將tslib的庫文件也放到/opt目錄下
然后在源碼根目錄下建一個腳本auto.sh,添加以下代碼
#!/bin/sh
./configure \
-v \
-prefix /opt/qt5 \ //生成路徑
-release \
-opensource \
-no-accessibility \
-make libs \
-xplatform arm-none-linux-gnueabi-g++ \ //你的編譯器
-optimized-qmake \
-pch \
-qt-zlib \
-tslib \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-pkg-config \
-no-separate-debug-info \
-I/opt/tslib1.4/include -L/opt/tslib1.4/lib //tslib的庫
接下來直接執(zhí)行腳本,進行裁剪
./auto.sh
?接下來就是編譯,安裝
make -j4
sudo make install
完成后會在之前建的qt5文件夾里生成所需的文件
其中bin目錄下就有我們所需要的qmake文件
?將lib和plugins兩個文件夾直接打包拿出來備用,一定要打包,因為lib下的庫文件是有鏈接屬性的,如果直接復制出來會使其鏈接屬性丟失
這個時候打開qt軟件,依次打開工具——選項——構(gòu)建和運行
首先設置編譯器,添加一個C++編譯器,如下圖所示
接著手動添加一個版本,qmake就是剛剛編譯出來的。
?最后在構(gòu)建套件下將我們設置好的編譯器和版本添加進來
完成后qt的arm編譯環(huán)境就算是搭好了,接下來隨便放置一兩個元件,編譯后拿出來準備放到arm開發(fā)板上運行。
arm環(huán)境搭建
在你的arm開發(fā)板中建一個目錄,/usr/local,其中再建兩個文件夾qt、tslib,將之前壓縮好的lib和plugins文件放到qt目錄下解壓,tslib也是同理
?接著打開arm開發(fā)板的/etc/profile文件,添加以下內(nèi)容
export PATH PS1 OPIEDIR QPEDIR QTDIR EDITOR TERM
export TS_ROOT=/usr/local/tslib //放入的tslib目錄
export LD_LIBRARY_PATH=$TS_ROOT/lib:$LD_LIBRARY_PATH
export PATH=$TS_ROOT/bin:$PATH
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=$TS_ROOT/etc/pointercal
export TSLIB_CONFFILE=$TS_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TS_ROOT/lib/ts
# qt
export QT_ROOT=/usr/local/qt //放入的qt目錄
export LD_LIBRARY_PATH=$QT_ROOT/lib/:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
export QT_QPA_GENERIC_PLUGINS=tslib
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0:inverty
export QT_QPA_FB_TSLIB=1
export LD_PRELOAD=$TS_ROOT/lib/libts.so
?添加完設置環(huán)境變量
source /etc/profile
?這個時候程序還不能跑起來,初次需要做觸控校準設置,執(zhí)行tslib/bi目錄下的ts_calibrate程序
./usr/local/tslib/bin/ts_calibrate
完成觸控校準后,就可以將你編好的qt程序放到arm開發(fā)板里執(zhí)行了(注意別忘了賦權限,不然程序沒有權限執(zhí)行不了)。文章來源:http://www.zghlxwxcb.cn/news/detail-401418.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-401418.html
到了這里,關于linux下將QT移植至arm環(huán)境的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!