0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式Linux-Qt環(huán)境搭建 Qt程序運行測試

碼農(nóng)愛學習 ? 來源:碼農(nóng)愛學習 ? 作者:碼農(nóng)愛學習 ? 2022-06-01 09:07 ? 次閱讀

本編介紹如何在嵌入式Linux開發(fā)板上配置Qt運行環(huán)境,并進行Qt程序運行測試。

1 tslib編譯

tslib之前在測試觸摸屏的時候使用過,這里再來記錄一下編譯過程。

下載tslib庫的源碼:https://github.com/libts/tslib/tags

將下載的源碼拷貝到ubuntu虛擬機中,然后解壓:

tar xvf tslib-1.21.tar.bz2 

編譯 tslib 的時候需要先在 ubuntu 中安裝一些文件:

sudo apt-get install autoconf 
sudo apt-get install automake 
sudo apt-get install libtool 

在 ubunt中創(chuàng)建一個名為“tslib”的目錄存放編譯結(jié)果,然后執(zhí)行以下指令進行編譯:

./configure --host=arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=/home/xxpcb/myTest/imx6ull/otherlib/tslib-2/tslib

make
make install

編譯完成后,make install會將編譯成果復制到指定的tslib目錄中:

poYBAGKWMTuAJPDJAAErxazYK9U995.png

將tslib文件夾先整個打包為arm-tslib.tar.bz2文件,后面移植到開發(fā)板時用:

tar -jcf arm-tslib.tar.bz2 tslib 

2 Qt源碼編譯

2.1 下載Qt5的源碼

下載地址:https://download.qt.io/archive/qt/5.15/5.15.2/single/

pYYBAGKWMUaAF2DOAAFlBSLg_OM728.png

將下載的qt-everywhere-src-5.15.2.tar.xz拷貝到Ubuntu中,然后解壓:

tar -xvf qt-everywhere-src-5.15.2.tar.xz 
poYBAGKWMU2AQYcPAAG80_L1qzg252.png

2.2 修改qmake.conf

修改qtbase/mkspecs/linux-arm-gnueabi-g++/中的qmake.conf文件

這個文件默認的內(nèi)容是:

#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

# modifications to g++.conf
QMAKE_CC                = arm-linux-gnueabi-gcc
QMAKE_CXX               = arm-linux-gnueabi-g++
QMAKE_LINK              = arm-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = arm-linux-gnueabi-g++

# modifications to linux.conf
QMAKE_AR                = arm-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = arm-linux-gnueabi-objcopy
QMAKE_NM                = arm-linux-gnueabi-nm -P
QMAKE_STRIP             = arm-linux-gnueabi-strip
load(qt_config)

修改成如下:

pYYBAGKWMVaAT4SVAAHCwVl5zUw772.png

2.3 配置編譯選項

查看編譯選項,輸入./configure -help 指令,查看可配置選項

./configure -help
poYBAGKWMV2AWfe3AAJYlvKLSsU361.png

可以看到配置項有很多,因此可以使用一個配置腳本來進行配置。

編寫一個autoconfigure.sh文件,然后根據(jù)自己的情況,寫入如下配置:

./configure -prefix /home/xxpcb/myTest/imx6ull/otherlib/qt/qt-everywhere-src-5.12.9/arm-qt \
-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/xxpcb/myTest/imx6ull/otherlib/tslib-2/tslib/include \
-L/home/xxpcb/myTest/imx6ull/otherlib/tslib-2/tslib/lib \
-recheck-all

注意其中3處是自己的配置路:

1 /home/xxpcb/myTest/imx6ull/otherlib/qt/qt-everywhere-src-5.12.9/arm-qt 為編譯輸出路徑。

2 /home/xxpcb/myTest/imx6ull/otherlib/tslib-2/tslib/include 為tslib 頭文件路徑。

3 /home/xxpcb/myTest/imx6ull/otherlib/tslib-2/tslib/lib 為tslib相關(guān)庫文件路徑。

其它一些參數(shù)的含義:

-opensource:構(gòu)建Qt的開源版本

-release:使用release版本的Qt

-xplatform linux-arm-gnueabi-g++:指定編譯器

-skip qt3d:跳過Qt的3d

-make libs:編譯要用到的庫

-make examples:編譯生成Qt的例程代碼

-nomake tools:不生成Qt的工具

-no-openssl:不使用openssl

2.4 編譯

配置前需要先安裝 g++

sudo apt-get install g++

賦予腳本可執(zhí)行權(quán)限,然后執(zhí)行 autoconfigure.sh

chmod +x autoconfigure.sh
./autoconfigure.sh 
poYBAGKWMWqAGjS2AAFyYkWnLfg824.png

運行完成之后:

pYYBAGKWMXGAWpoYAAEAVDQVJso376.png

然后就可以執(zhí)行make指令進行編譯了。

編譯大約需要十幾到幾十分鐘。

poYBAGKWMXmAIA18AAL3xumBDCA010.png

編譯完成之后,再執(zhí)行make install進行安裝,安裝之后就可以看到arm-qt文件中的內(nèi)容了:

pYYBAGKWMX-APnNwAAHPuD-9fOI674.png

將qrm-qt文件夾先整個打包為arm-qt.tar.bz2文件,后面移植到開發(fā)板時用:

tar -jcf arm-qt.tar.bz2 arm-qt

2.5 編譯出錯的問題

make編譯時可能會遇到編譯出錯

情況1:我遇到過下面這種:

poYBAGKWMYWAe9dTAACeL7o-xRc008.png

這種情況是因為我的ubuntu虛擬機空間不夠用了,解決方法就是給虛擬器擴容,具體操作過程見:

情況2:編譯最新版本的QT源碼報錯

poYBAGKWMYuAEenyAAHoZx4PJNQ420.png

使用Qt最新版本5.15.2編譯報錯,暫未找到解決方法,所以我先用5.12.9版本的Qt。

3 開發(fā)板上配置Qt環(huán)境

3.1 復制tslib和Qt的編譯文件

將之前打包的arm-tslib.tar.bz2和arm-qt.tar.bz2壓縮包復制到板子中,可以先復制到nfs網(wǎng)絡(luò)位置,然后解壓到/usr/lib 目錄下,解壓后開刪除無用的壓縮包。

這是對arm-qt的操作步驟:

cp arm-qt.tar.bz2 ~/myTest/nfs/rootfs/usr/lib
cd ~/myTest/nfs/rootfs/usr/lib/
tar xf arm-qt.tar.bz2
rm arm-qt.tar.bz2 

arm-tslib復制與解壓過程類似。

3.2 設(shè)置開發(fā)板的環(huán)境變量

編輯/etc/profile,寫入如下內(nèi)容:

export TSLIB_ROOT=/usr/lib/arm-tslib 
export TSLIB_CONSOLEDEVICE=none 
export TSLIB_FBDEVICE=/dev/fb0 
export TSLIB_TSDEVICE=/dev/input/event1 
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf 
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts 
export TSLIB_CALIBFILE=/etc/pointercal 
export  LD_PRELOAD=$TSLIB_ROOT/lib/libts.so

export QT_ROOT=/usr/lib/arm-qt 
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1 
export QT_QPA_FONTDIR=/usr/share/fonts 
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins 
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0 
export QT_PLUGIN_PATH=$QT_ROOT/plugins 
export LD_LIBRARY_PATH=$QT_ROOT/lib:$QT_ROOT/plugins/platforms 
export QML2_IMPORT_PATH=$QT_ROOT/qml 
export QT_QPA_FB_TSLIB=1

然后使該配置立即生效:

source /etc/profile 

4 Qt運行測試

Qt的編譯文件中,自帶的Qt的一些例子,可以先來在板子上運行這些例子看看Qt程序能否在板子上正常運行。

這是運行其中的一個程序:

/usr/lib/arm-qt/examples/widgets/animation/animatedtiles/animatedtiles
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5046

    文章

    18821

    瀏覽量

    298579
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207918
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4771

    瀏覽量

    96180
  • Qt
    Qt
    +關(guān)注

    關(guān)注

    1

    文章

    300

    瀏覽量

    37603
收藏 人收藏

    評論

    相關(guān)推薦

    如何在嵌入式Linux開發(fā)板上配置Qt運行環(huán)境

    本文基于I.MX6ULL芯片的Linux開發(fā)板,介紹如何在嵌入式Linux開發(fā)板上配置Qt運行環(huán)境
    發(fā)表于 10-10 09:56 ?2483次閱讀

    嵌入式linux部署qt的幾個疑問

    嵌入式linux部署qt幾個疑問在windows系統(tǒng)里編好的QT程序,經(jīng)過交叉編譯后能直接運行
    發(fā)表于 10-27 09:47

    基于QT嵌入式linux圖形應(yīng)用軟件設(shè)計

    嵌入式linux開發(fā)環(huán)境搭建嵌入式linux開發(fā)模型、li
    發(fā)表于 11-05 08:11

    Qt Creator For嵌入式Linux搭建流程

    Qt Creator For 嵌入式Linux搭建流程1.安裝QtCreator2.編譯Qt for embbed3.編譯gdb及gdbse
    發(fā)表于 11-05 08:15

    如何用QT開發(fā)嵌入式Linux工業(yè)平板界面免環(huán)境搭建

    環(huán)境搭建如何用QT開發(fā)嵌入式Linux工業(yè)平板界面免環(huán)境
    發(fā)表于 12-21 07:48

    QT嵌入式環(huán)境搭建

    ,我個人也已經(jīng)使用了很長一段時間的 qt5.6 for windows ,本文就來介紹一下QT嵌入式環(huán)境搭建。 移植以到 JZ2440
    發(fā)表于 12-24 07:26

    基于Qt嵌入式Linux通訊簿程序設(shè)計

      摘 要: 隨著嵌入式系統(tǒng)的發(fā)展,在Linux 下使用Qt 開發(fā)嵌入式應(yīng)用程序嵌入式圖形用戶
    發(fā)表于 11-23 11:31 ?3547次閱讀

    嵌入式linux GUI-Qt解析

    職業(yè)培訓班》二期課程中嵌入式linux應(yīng)用開發(fā)方面的重要內(nèi)容。不少學員對QT方面的內(nèi)容比較關(guān)注,所以在這里我們先對QT做一下簡單介紹。 QT
    發(fā)表于 11-01 16:53 ?1次下載

    嵌入式linux應(yīng)用開發(fā)之QT

    隨著linux系統(tǒng)及基于linux系統(tǒng)的嵌入式產(chǎn)品的蓬勃發(fā)展,QtQt/Embedded、Qtopia的字樣越來頻繁的出現(xiàn)在我們面前。
    發(fā)表于 11-06 14:05 ?4次下載

    嵌入式linux安裝qt

    嵌入式linux部署qt幾個疑問在windows系統(tǒng)里編好的QT程序,經(jīng)過交叉編譯后能直接運行
    發(fā)表于 10-20 18:06 ?6次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>安裝<b class='flag-5'>qt</b>

    嵌入式LinuxQt

    嵌入式LinuxQt嵌入式LinuxQt配置特定設(shè)備嵌入
    發(fā)表于 11-01 17:06 ?3次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>的<b class='flag-5'>Qt</b>

    嵌入式LinuxQT版本,嵌入式Linux版本Qt5.4快速部署

    (Toradex Apalis iMX6)基于Embedded Linux快速部署做較詳細說明。嵌入式Linux版本Qt5.4快速部署--- by Toradex 秦海
    發(fā)表于 11-01 17:20 ?0次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>的<b class='flag-5'>QT</b>版本,<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>版本<b class='flag-5'>Qt</b>5.4快速部署

    嵌入式Linux應(yīng)用程序開發(fā)-(1)第一個嵌入式QT應(yīng)用程序

    開發(fā)環(huán)境,請參考以下帖子: 嵌入式Linux開發(fā)環(huán)境搭建-(5)安裝和配置Qt Creat
    發(fā)表于 11-01 17:21 ?16次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>應(yīng)用<b class='flag-5'>程序</b>開發(fā)-(1)第一個<b class='flag-5'>嵌入式</b><b class='flag-5'>QT</b>應(yīng)用<b class='flag-5'>程序</b>

    嵌入式linux安裝qt,嵌入式Linux版本Qt5.4快速部署

    (Toradex Apalis iMX6)基于Embedded Linux快速部署做較詳細說明。嵌入式Linux版本Qt5.4快速部署--- by Toradex 秦海
    發(fā)表于 11-02 10:51 ?0次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>安裝<b class='flag-5'>qt</b>,<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>版本<b class='flag-5'>Qt</b>5.4快速部署

    嵌入式Linux開發(fā)環(huán)境搭建-(5)安裝和配置Qt Creator開發(fā)工具

    運行環(huán)境,后續(xù)的應(yīng)用程序開發(fā),會涉及到嵌入式 QT 界面程序設(shè)計,因此,在 ubuntu
    發(fā)表于 11-02 11:51 ?10次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>開發(fā)<b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>-(5)安裝和配置<b class='flag-5'>Qt</b> Creator開發(fā)工具