qt-embed環境搭建(送linux光碟片)

來源:互聯網
上載者:User

有些linux的光碟片,需要的可以聯絡我,qq是602559817,每人最多3張

這裡沒有加入網上都有的觸控螢幕的支援:tslib
下載了qt-embedded-linux-opensource-src-4.5.2
分別存為兩個檔案夾xxx-pc和xxx-arm

同時為了擷取qvfb(以前下過的沒用了,版本不對),下載了qt-x11-opensource-src-4.5.2,直接解壓。
* 首先,為了得到qvfb,進入qt-x11-opensource-src-4.5.2目錄中。網上的教程說只需進入tools/qvfb裡,拷貝兩個檔案,qmake -project; qmake; make就可以了,但是我這裡報錯說../bin/裡沒有uic,發覺這個還是要自己編。於是開始編譯這個碩大的東西:
1,configure,其實只是為了獲得一個uic, qvfb,如果把整個都編譯了,靠,時間就真的很長,我這就有教訓了,ubuntu 8.04的系統,3G的主頻,編譯了5個小時差不多。所以在配置的時候要去掉很多用不到的東西,比如webkit, sql之類的,通過./configure --help可以知道什麼東西可以不用。但是 -qvfb是一定要的。因此這裡沒有考慮裁剪的配置命令就算:
./configure -qvfb
2,在差不多十幾分鐘的配置時間之後,就直接:
make
3,在差不多5個小時之後,不用make install了,進入到tools/qvfb目錄下,複製tools/shared/deviceskin/下的deviceskin.h, deviceskin.cpp 到該目錄下,然後建立工程:
qmake -project
然後
qmake
然後修改產生的Makefile檔案,在LIBS後面添上-lXtst(當然如果沒有這個庫的話,需要自己裝了: sudo apt-get install libxtst-dev)
make
產生了qvfb的可執行檔,就是這個了。

** 接下來進入qt-embedded-linux-opensource-src-4.5.2-pc,構建用於pc上類比開發的庫
1,./configure
以上進行配置,預設的配置選項可以通過./configure ---help了查看。要裁剪的話有自己配置
我這邊的配置是: ./configure -opensource -qvfb -no-qt3support -no-webkit -platform linux-g++
2,make
以我上面的配置,編譯了3小時左右
3,sudo make install
因為在配置的時候沒有指定安裝路徑,所以裝在了/usr/local/Trolltec/QtEmbedded-4.5.2-i386/下
4,測試
首先運行剛才編譯好的qvfb,然後進入到xxx/Trolltec/QtEmbedded-4.5.2-i386/example下,隨意運行一個樣本程式,比如 ./application -qws,就可以在qvfb裡看到了。
5,為了編譯自己的程式,需要配置好環境變數。因為之前為了運行一些KDE下的程式,使用apt安裝過了qt4的開發包,因此系統裡已經有了相應的 qmake之類的。那麼如果說要能夠使用剛編譯好的,那麼就需要調整環境變數來使用新的。其實如果不使用這些,也可以使用apt裝好的來進行PC上的類比開發。
這裡有快速安裝:
sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer libqt4-dev
以上就可以有了基本的PC上的qt編譯環境,但是奇怪的是qt3裡有個qt3-embedded-tools包,4卻沒有,因此需要前面的繁瑣工作來編譯qvfb。
如果是使用剛才編譯好的,需要如下環境變數設定:(這部分以後有實際用qt開發再了弄)
*** 最後要交叉編譯QT庫了。
1,進入到qt-embedded-linux-opensource-src-4.5.2-arm目錄下,進行配置,我的配置如下:
./configure -xplatform qws/linux-arm-g++ -embedded arm -little-endian -opensource -no-largefile -no-qt3support -no-webkit -qt-gfx-linuxfb -depths 16/
-qt-kbd-tty -qt-kbd-usb -qt-mouse-pc -qt-mouse-bus -qt-mouse-yopy -qt-zlib -qt-gif -qt-libpng -qt-libjpeg
這裡只是實驗性的配置了一下,如有具體需要可以再裁剪的。但是這裡有幾個地方要注意,也不知道是不是我這邊特有的現象:
a,我試過將-prefix定義為arm所在目錄下,但是總是在編譯過程中有錯誤,所以還是裝在了預設的目錄下;
錯誤如下:
/media/f/QT/qt-embedded-linux-opensource-src-4.5.2-arm/bin/moc: error while loading shared libraries: /usr/local/arm/3.4.1/arm-linux/lib/libdl.so.2: ELF file OS ABI invalid
b,對於交叉編譯器,我對是arm-linux-3.4.1,低版本的就沒用了,這個在官網上有說明;
c,對於輸入裝置沒有特別挑選,覺得可能的都選了。
關於配置更詳細的參數說明還是要看configure --help裡的說明,特別是裡面有針對embedded部分的說明;
2,配置之後,在make
3,make完了之後,sudo make install。因為是裝在預設目錄下(/usr/local/Trolltech/QtEmbedded-4.5.2-arm),所以要用sudo了;
4,在安裝之後,網上的教程說要設定各種環境變數來配置qt開發環境。我這裡沒有配置qvfb類比開發的環境,就直接配置為交叉編譯的環境了
因為已經在系統裡安裝了亂七八糟的各種qt,但為了能夠在編譯時間能夠調用到交叉編譯的qmake,所以在~/.bashrc下添加了:
export PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin:$PATH
這樣的話機會優先調用arm下的qmake了。但配置生效後(一般是重開shell或者source ~/.bashrc),執行命令which qmake就可以看到具體路徑了,但是奇怪的是whereis qmake還好死老樣子。
5,我就只設定了這個環境變數,然後寫了一個hello world,儲存為main.cpp
#include
#include
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel label("Hello, world! from zhs");
label.show();
return app.exec();
}
然後執行:qmake -project; qmake; make,就產生了arm上啟動並執行程式了。你可以看看Makefile裡面的CC和CXX是不是arm-linux-g++,以確定是否為交叉編譯。
**** 移植
最後就是要移植交叉編譯好的庫到板子上了。首先還是直接用nfs掛載,因此就不用考慮哪些要,哪些不要,統統都搬到目錄下了,以後再裁剪吧
1,拷貝/usr/local/Trolltech/QtEmbedded-4.5.2-arm這個目錄到rootfs/usr/local/Trolltech下面,也就是和PC上保持同一個路徑;
雖然可以為其他路徑,但是會要很繁瑣的環境變數設定和其他設定,這裡一切從簡。
2,這樣之後,我這進入到4.5.2-arm/example/下面,因為我在configure的時候並沒有將example忽略掉,因此可以執行樣本程式了:
./test -qws
可能會提醒你有些庫找不到,那就到/usr/local/arm/3.4.1/arm-linux/lib/裡面找相關的庫拷貝到板子上的庫目錄下;
3,一般這樣之後就沒問題了,程式正常運行,自己寫的hello world也正常運行了。但是,對於我這個at91rm9200的179MHz的cpu來說,qt還是很吃cpu,而且樣本程式的記憶體也基本最少要吃 10M,很可怕,不知道是不是新的版本的是這樣,這個以後要評估一下。

***** 總結:
聯絡郵箱:GaussCheng@gmail.com
系統內容: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/binPATH"
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/binPATH
export LD_LIBRARY_PATH=$QTDIR/libQTDIR/plugins/imageformatsLD_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/binPATH
export LD_LIBRARY_PATH=$QTDIR/libQTDIR/plugins/imageformatsLD_LIBRARY_PATH
最後在根檔案系統的/etc/init.d/rcS 中的適當位置,加上/bin/initqt &

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.