【Qt】Embedded Linux


Qt Embedded 分成 Linux/Windows CE/Symbian 三種,此處指 Linux 平台。

【目的】

  • 基本 Qt Embedded 環境設置。

【基本環境】

  1. Qt Creator。
  2. Ubuntu 套件(libxrender-dev不一定需要)。
    $apt-get install libxtst-dev libxrender-dev libdirectfb-dev

【步驟】

  1. 下載 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 
  2. 編譯 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
  3. 設定給 Qte 的環境變數
    $ vi ~/.bashrc
    加入下面的設定,主要是 QTEDIR/PATH/LD_LIBRARY_PATH 
    export 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
  4. 編譯 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
  5. 總結上面,目前 Qte/Qt-x11 安裝在下面目錄
    $ cd /usr/local/Trolltech
    $ ls
    Qt-4.6.3  QtEmbedded-4.6.3
  6. 編譯 qvfb,這是一個在 Host 端驗證 Qt 程式的模擬器。
    $ cd qt-x11-opensource-src-4.6.3/tools/qvfb
    $ make
    $ sudo make install
    $ cp qvfb /usr/bin
  7. 在 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
  8. qvfb ((Qt Virtual FrameBuffer))就是 編出來 Qte 的程式,
    可在 Host 先用 qvfb 測試在 Target 跑起來的樣子。使用方式如下
    $ cd ${QTEDIR}/demos/chip
    $ qvfb &
    $ ./chip -qws
  9. 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
    這樣就會帶出下面視窗進行安裝,一直按著下一步下一步就可以安裝完成了。
    image
  10. 安裝完成之後就開始設定 Qt 的編譯環境讓 Qt/Qte 都可以在這個 IDE 編譯。
    1. 在 QtCreator 點選 Tools | Options… 就會出現下面視窗。
    2. 接著點選 Qt4 | Qt Versions 進入 Qt Version 設定頁面。
    3. 按下右邊的 加號圖示 就可以編輯編譯所需要的參數( Qt Version/QMake Location )。
    4. 新增完之後記得按一下 Rebuild 確認。OK的話就會打勾。
    5. 目前的新增的就是Manual 那邊(上面紅色框框部分)。
    6. 而最後就是選一個目前要用的(下面紅色框框部分,目前是用 4.6.2(Qte)
    7. 如果程式無法在 QtCreator 編譯成功,請留意是否為檔案/目錄 屬性/權限的問題。
      必要時請試試 chmod/chown/chgrp
      image
    8. 若有問題請確認 Projects 這邊,加入 Build Setting 之後記得 active 。
      image
  11. 編譯出來的 Qte 執行檔可以用 gvfb 在 Host 端先行除錯。
    $ /usr/local/Trolltech/Qt-4.6.2/bin/qvfb -depth 16 -width 1024 -height 768&
    $ qte-file -qws
      
  12. 編譯出來的 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。

【參考】

 

Ed32. Copyright 2008 All Rights Reserved Revolution Two Church theme by Brian Gardner Converted into Blogger Template by Bloganol dot com