歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> QT 4.5.2 嵌入式開發平台的搭建

QT 4.5.2 嵌入式開發平台的搭建

日期:2017/2/28 16:18:14   编辑:Linux教程

QT 4.5.2 嵌入式開發平台的搭建
系統環境:Ubuntu 9.04
編譯環境:crosstool 0.43 安裝後生成4.1版本的arm-linux-GCC
在配置之前,sudo apt-get install build-essential 來安裝基本的開發環境

Qtx11(源碼安裝) 安裝准備
建議直接下二進制程序安裝。
1.安裝依賴的庫,你也可以不轉,再安裝出錯的時候補上。
sudo apt-get install libxrender-dev libxrandr-dev libxcursor-dev libxinerama-dev libxi-dev libxt-dev libglib2.0-dev libxtst-dev
這個是我剛裝完系統後根據QTx11編譯錯誤一個一個跟蹤出來的,並不能保證是所有的安裝依賴。

2.然後進入源代碼頂層目錄輸入
./configure -qt-sql-sqlite -plugin-sql-sqlite -nomake demos -nomake examples -silent
其中的編譯參數可以自己根據./configure -help裡面的提示篩選。

Qt-embedded 安裝准備
1.如果你的交叉工具組都是以arm-linux-開頭的則直接進行下面的步驟就行了,否則要有兩個方法,一就是給你的工具組做軟連接,然他們的前綴為arm-linux-。推薦用這辦法。二是打開Qt-embedded的源碼目錄,修改 mkspecs/qws/linux-arm-g++/qmake.conf,將裡面的arm-linux-改成你交叉編譯工具的前綴。
2.
打開qt-embedded-linux-opensourcesrc4.5.2/src/gui/embedded/qmouselinuxtp_qws.h
在裡添加如下兩個宏定義,其原因不知道,還望高人指教,這是在網上搜集資料是看到的,我試過不添加,則下面提供的配置選項生成的Qt-embedded庫編譯出來的程序不能使用觸摸屏。如果有人使用tslib觸摸屏驅動成功移植的,也請分享一下。
#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW

3.進入源代碼頂層目錄輸入:
./configure -embedded arm -little-endian -qt-sql-sqlite -plugin-sql-sqlite -no-scripttools -no-nis -no-largefile -no-libmng -no-accessibility -depths 16 -nomake docs -nomake demos -nomake examples -qt-zlib -feature-THREAD -feature-CONCURRENT -feature-SOUND -feature-EFFECTS -no-feature-CURSOR -silent

同理,上面的配置參數可以根據嵌入式應用的需要,進行裁剪,把不需要的東西都去掉,這對嵌入式應用來說是非常重要的,不僅可以節省空間也提高效率。

Qt Creator 安裝
Qt Creator 是一款輕量級的IDE,我用它的目的就是為了方便QT程序的交叉編譯。
1.如果Qtx11是從源碼安裝的,則不帶Qt Creator,這時可以去官方網站下載二進制程序安裝。安裝好後,打開Qt Creator->Tools->options 然後在左邊的導航欄展開Qt4,選Qt Versions。點擊右上的加號圖標,在version name裡可以隨便填,主要用來區分X86 和 arm 等Qt庫的版本,在路徑選到之前安裝QTx11 庫的路徑,默認安裝是在 /usr/local/Trolltech/QtEmbedded-4.5.2,然後點擊rebuild,如果看到打對勾,則一切正常。同理,可以在添加上QtE-arm的庫。
2.現在可以建立一個項目來玩玩,也可找到Qt-embedded的源碼包,裡面有一個觸摸屏校正程序,在example\qws\mousecalibration,這個程序是嵌入式設備必須的,不然觸摸屏是不能使用的。用Qt Creator打開其中的mousecalibration.pro文件。在Qt Creator左邊,點擊Projects。在Build Settings 勾上Release,Qt Version 選 之前你為QTE-arm庫起的名字,然後build就生成適合開發板運行的QT程序了。

配置環境變量,方便用別的IDE和命令行調用qmake moc 等程序
用編輯器打開~/.profile文件添加如下,保存注銷就生效。
# set PATH so it includes Qt4.5.2 X11 bin if it exists
if [ -d "/usr/local/Trolltech/Qt-4.5.2/bin" ] ; then
PATH="/usr/local/Trolltech/Qt-4.5.2/bin:$PATH
fi

Qt文件系統的配置
准備
1.在根文件系統裡建立/opt/qt/bin lib plugins 三個文件夾
2.把/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib(即Qt-embedde庫的安裝目錄)中的libQtCore.so.4.5.2 libQtGui.so.4.5.2 libQtNetwork.so.4.5.2 放到開發板根文件系統的/opt/qt/lib裡,並且做三個軟鏈接分別為libQtCore.so.4 libQtGui.so.4 libQtNetwork.so.4
3.接著再把/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/fonts/ 中帶Vera和fixed的文件拷貝到根文件系統的/opt/qt/lib/fonts/
4.再要把/usr/local/Trolltech/QtEmbedded-4.5.2-arm/plugins/imageformats 裡的文件拷貝到根文件系統的/opt/qt/plugins/imageformats 裡。
5.到現在基本的Qt庫就已經移植好了。在移植應用程序的時候,可以用如下命令查看需要那些共享庫:
arm-linux-readelf -a 程序名 | grep "Share",其中arm-linux-可該成你交叉編譯工具的前綴

配置根文件系統
一般首先要做的就是將一個觸摸屏校正程序放到文件系統的bin裡(其實放那裡都一樣)。然後寫一個腳本程序,讓系統開機時調用,我的腳本程序initqt如下(別忘了給它添加可執行權限):
#!/bin/sh
export HOME=/root
export QTDIR=/opt/qt
#用來選擇LinuxTP鼠標驅動
export set QWS_MOUSE_PROTO="LinuxTP:/dev/h3600_tsraw"
export QWS_DISPLAY="LinuxFB:/dev/fb0"
#用來調整字體顯示的比例,裡面的數值可以自己換一下看看效果
export QWS_DISPLAY="LinuxFB:mmWidth130:mmHeight100:0"
export QWS_SIZE="320x240"
export QT_PLUGIN_PATH=$QTDIR/plugins/
#字體目錄
export QT_QWS_FONTDIR=$QTDIR/lib/fonts
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$QTDIR/plugins/imageformats:$LD_LIBRARY_PATH
#判斷是否已經校正過屏幕了
if [ -s "etc/pointercal" ] ; then
else
/bin/mousecalibration
fi

再配置一下/etc/profile文件,讓一下環境變量登錄就有效,以下是我的配置:
# Ash profile
# vim: syntax=sh
# No core files by default
#ulimit -S -c 0 > /dev/null 2>&1
USER="`id -un`"
LOGNAME=$USER
PS1='[\u@\h \W]# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH
export HOME=/root
export QTDIR=/opt/qt
export set QWS_MOUSE_PROTO="LinuxTP:/dev/h3600_tsraw"
export QWS_DISPLAY="LinuxFB:/dev/fb0"
export QWS_DISPLAY="LinuxFB:mmWidth130:mmHeight100:0"
export QWS_SIZE="320x240"
export QT_PLUGIN_PATH=$QTDIR/plugins/
export QT_QWS_FONTDIR=$QTDIR/lib/fonts
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$QTDIR/plugins/imageformats:$LD_LIBRARY_PATH

最後在根文件系統的/etc/init.d/rcS 中的適當位置,加上/bin/initqt &

Copyright © Linux教程網 All Rights Reserved