Qt Embedded 分成 Linux/Windows CE/Symbian 三種,此處指 Linux 平台。
【目的】
- 基本 Qt Embedded 環境設置。
【基本環境】
- Qt Creator。
- Ubuntu 套件(libxrender-dev不一定需要)。
$apt-get install libxtst-dev libxrender-dev libdirectfb-dev
【步驟】
- 下載 Qt ,目前使用 4.6.3 ( Qte 和 Qt 的 tarball 都是同一個,可以透過 configure 來選擇)
$ wget http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.3.tar.gz
- 編譯 Qte
$ tar zxvf qt-everywhere-opensource-src-4.6.3.tar.gz $ cd qt-everywhere-opensource-src-4.6.3 $ ./configure -embedded x86 -qvfb $ make $ sudo make install
- 設定給 Qte 的環境變數
$ vi ~/.bashrc
加入下面的設定,主要是 QTEDIR/PATH/LD_LIBRARY_PATHexport QTEDIR=/usr/local/Trolltech/QtEmbedded-4.6.3 export PATH=/usr/local/Trolltech/QtEmbedded-4.6.3/bin:$PATH export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.6.3/lib:$LD_LIBRARY_PATH
之後記得使用 ldconfig 讓設定生效$ source ~/.bashrc $ ldconfig
- 編譯 Qt (因為不確定 make clean 能否清乾淨,所以把之前的 Qte 先移掉,再把 tarball 再直接解 tar)
$ tar -zxvf qt-x11-opensource-src-4.6.3.tar.gz $ cd qt-x11-opensource-src-4.6.3 $ ./configure $ make $ sudo make install
- 總結上面,目前 Qte/Qt-x11 安裝在下面目錄
$ cd /usr/local/Trolltech $ ls Qt-4.6.3 QtEmbedded-4.6.3
- 編譯 qvfb,這是一個在 Host 端驗證 Qt 程式的模擬器。
$ cd qt-x11-opensource-src-4.6.3/tools/qvfb $ make $ sudo make install $ cp qvfb /usr/bin
- 在 4.6.2 可能會安裝在底下目錄,若有需要請自行丟入 /usr/bin
$ cd ~/qt-everywhere-opensource-src-4.6.2/tools/qvfb $ sudo make install install -m 644 -p "../../bin//`basename ../../bin/qvfb`.debug" "/usr/local/Trolltech/Qt-4.6.2/bin/`basename ../../bin/qvfb`.debug" install -m 755 -p "../../bin/qvfb" "/usr/local/Trolltech/Qt-4.6.2/bin/qvfb" strip "/usr/local/Trolltech/Qt-4.6.2/bin/qvfb" $ cp /usr/local/Trolltech/Qt-4.6.2/bin/qvfb /usr/bin
- qvfb ((Qt Virtual FrameBuffer))就是 編出來 Qte 的程式,
可在 Host 先用 qvfb 測試在 Target 跑起來的樣子。使用方式如下$ cd ${QTEDIR}/demos/chip $ qvfb & $ ./chip -qws
- Nokia/Trolltech 也提供一個稱為 QtCreator 的整合性編輯器。以 QtCreator v1.3.1 為例。安裝方式
$ wget http://get.qt.nokia.com/qtcreator/qt-creator-linux-x86-opensource-1.3.1.bin $ chmod 777 qt-creator-linux-x86-opensource-1.3.1.bin $ ./qt-creator-linux-x86-opensource-1.3.1.bin
這樣就會帶出下面視窗進行安裝,一直按著下一步下一步就可以安裝完成了。
- 安裝完成之後就開始設定 Qt 的編譯環境讓 Qt/Qte 都可以在這個 IDE 編譯。
- 在 QtCreator 點選 Tools | Options… 就會出現下面視窗。
- 接著點選 Qt4 | Qt Versions 進入 Qt Version 設定頁面。
- 按下右邊的 加號圖示 就可以編輯編譯所需要的參數( Qt Version/QMake Location )。
- 新增完之後記得按一下 Rebuild 確認。OK的話就會打勾。
- 目前的新增的就是Manual 那邊(上面紅色框框部分)。
- 而最後就是選一個目前要用的(下面紅色框框部分,目前是用 4.6.2(Qte)。
- 如果程式無法在 QtCreator 編譯成功,請留意是否為檔案/目錄 屬性/權限的問題。
必要時請試試 chmod/chown/chgrp 。
- 若有問題請確認 Projects 這邊,加入 Build Setting 之後記得 active 。
- 編譯出來的 Qte 執行檔可以用 gvfb 在 Host 端先行除錯。
$ /usr/local/Trolltech/Qt-4.6.2/bin/qvfb -depth 16 -width 1024 -height 768& $ qte-file -qws
- 編譯出來的 Qte 執行檔可以用 ldd 來看丟到實際機器所需要帶入的 Lib。
$ ldd qte-file linux-gate.so.1 => (0xb7f09000) libQtGui.so.4 => /usr/local/Trolltech/QtEmbedded-4.6.2/lib/libQtGui.so.4 (0xb758e000) libQtNetwork.so.4 => /usr/local/Trolltech/QtEmbedded-4.6.2/lib/libQtNetwork.so.4 (0xb74a3000) libQtCore.so.4 => /usr/local/Trolltech/QtEmbedded-4.6.2/lib/libQtCore.so.4 (0xb7216000) libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb71f0000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb70fd000) libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb70d8000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb70cd000) libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb6f7e000) libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb6f79000) libz.so.1 => /usr/lib/libz.so.1 (0xb6f64000) librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb6f5b000) /lib/ld-linux.so.2 (0xb7f0a000)
【問題】
- 如何編譯給 arm 用的 Qte。
【參考】
- Installing Qt on Embedded Linux
http://doc.trolltech.com/4.6/qt-embedded-install.html - The Virtual Framebuffer(關於qvfb)
http://doc.trolltech.com/4.6/qvfb.html - ubuntu 8.10下建立Qt/Embedded 4.5开发环境
http://blog.chinaunix.net/u3/91092/showart_1862993.html