CoLinuxインストールQt/Embedded編

前章:CoLinuxインストール開発環境の構築編

前章まででCoLinuxで、SHボード用バイナリが作成できるようになりました。 こんどは、Qt/Embeddedをインストールして見ましょう。 QtやQt/EmbeddedについてはWebを検索すると沢山の解説が見つかります。 その中で、非常に分かりやすく解説されているページがありますので紹介しておきます。
とりあえず早く動かして見たいという方は、導入までの手順を簡単にまとめましたので、次の「Qt/Embeddedのインストール」から実行してみてください。

Qtって何? Qt/Embeddedって何?

このページを読むとQtがどんなものかが分かります。

準備

  • Qt/Embeddedのコンパイル
    以降の説明をSH4用として説明します。SH3用の場合は4を3に変更してください。
    1. ソースのダウンロード
      トロールテック社からオープンソース版のソースファイルオープンソース版のソースファイルをダウンロードします。 ftp://ftp.trolltech.com/qt/source/qt-embedded-free-3.3.5.tar.gz
      $ wget ftp://ftp.trolltech.com/qt/source/qt-embedded-free-3.3.5.tar.gz
    2. 展開
      $ tar xvzf qt-embedded-free-3.3.5.tar.gz
    3. コンパイル準備(QMake環境)
      sh4用のqmake.confを用意します。
      $ cd qt-embedded-free-3.3.5
      $ cp -a mkspecs/qws/linux-generic-g++ mkspecs/qws/linux-sh4-g++
      $ vi mkspecs/qws/linux-sh4-g++/qmake.conf
      既に用意してあるlinux-generic-g++からコピーして、qmake.confの次の5箇所を変更します。
      QMAKE_CC	              = sh4-linux-gcc
         .
         .
      QMAKE_CFLAGS_RELEASE  = -O
         .
         .
      QMAKE_CXX             = sh4-linux-g++
         .
         .
      QMAKE_LINK            = sh4-linux-g++
      QMAKE_LINK_SHLIB	     = sh4-linux-g++
    4. コンフィグレーション
      $ ./configure -embedded sh4-linux -platform qws/linux-x86-g++ \
       -xplatform qws/linux-sh4-g++ -shared -thread -verbose -release \
       -qt-gif -freetype -depths 16 -qt-gfx-vnc -qt-gfx-transformed -no-cups
      
      Do you accept the terms of the license? yes
    5. コンパイル
      $ make sub-src
      $ make sub-plugins

テスト(サンプルプログラムの実行)

  • 動かしてみよう
    1. サンプルプログラムのコンパイル
      $ cd example/hello
      $ make
    2. ターゲット機から実行する
        NFSマウントします。
      # mount 192.168.7.**:/home/name /mnt -o tcp,ro -t nfs
        環境変数を設定します。
         (とりあえず、これでインストールしたことになります)
      $ export QTDIR=/mnt/qt-embedded-free-3.3.5
      $ export LD_LIBRARY_PATH=$QTDIR/lib
        とりあえずコンパイルしたサンプルプログラムのあるフォルダへ移動。
      $ cd /mnt/qt-embedded-free-3.3.5/example/hello
        ターゲット機にフレームバッファが存在する場合。
      $ ./hello -qws
        ターゲット機にフレームバッファがない場合はこちら。
        こうするとWindowsのVNCビューアで表示することが出来ます。
      $ ./hello -qws -display VNC

ファイルサイズについて(ライブラリとフォント)

  • 問題点
    Qt/EmbeddedはX環境をインストールすることなく、Qtを使うことが出来るので、 Qtと比べると随分コンパクト、かつ手軽に、グラフィカルな環境を提供してくれます。しかし、Embeddedの世界(Catのようなマイコンボード上)での使用を考えると もう少しファイルサイズを小さくしたいですね。
    上で説明した手順で作成した場合、ライブラリが約9MByte弱。フォントが15MByteほど準備(登録)されています。
  • ダイエット その1 [フォントの数を減らす]
    • TrueType (TTF) - WindowsとMacで現在標準のスケーラブルフォント
    • Postscript Type1 (PFA/PFB) - プリンタでよく使われるスケーラブルフォント
    • Bitmap Distribution Format fonts (BDF) - 非スケーラブルフォントの標準
    • Qt Prerendered Font (QPF) - Qt/Embedded 専用の軽量の非スケーラブルのフォント Qt/Embeddedは上記4つのフォントをサポートしています。
      ※トロールテック社のドキュメントにはBDFの使用を推奨していません。ロードに時間がかかる。メモリを消費する。とあり、QPFにレンダリングしてから使用することを進めています。
    3109  fixed_120_50.qpf
    2567  fixed_70_50.qpf
       0  fontdir
    3046  helvetica_100_50.qpf
    3301  helvetica_120_50.qpf
    3860  helvetica_140_50.qpf
    5179  helvetica_180_50.qpf
    7691  helvetica_240_50.qpf
    2735  helvetica_80_50.qpf
    1602  micro_40_50.qpf
    1629  mkfontdir-qws
    9892  smallsmooth_90_50.qpf
 1215089  unifont_160_50.qpf

 total 1263796 Byte (1264 KByte)

インストール直後15MByteほど登録されているフォントには、いろいろなサイズ、書体、飾りのものが含まれています。これから開発していくアプリケーションに必要なものだけをピックアップしてフォントの数を減らしましょう。
上記の場合で約1.3MByteです。日本語を表示することを考えると最低1MByteは必要になると思います。

  • ダイエット その2 [ライブラリの機能を削る]
    つぎにconfigureの設定を変えて、使用しない機能を削除し、コンパクトなライブラリを作ってみましょう。(それほど、小さくはなりませんが...)
    先に説明した手順でのconfigureのパラメータのうち、機能に関するものをピックアップすると、
 -shared            :共有ライブラリ
 -thread            :マルチスレッドサポート
 -release           :リリース(デバッグOFF)
 -qt-gif            :gifのサポート
 -freetype          :スケーラブル フォント サポート
 -depths 16         :グラフィック画面の色数(ビット)
 -qt-gfx-vnc        :VNCサポート
 -qt-gfx-transformed:グラフィック画面の回転

などがあります。
この状態で、libqte-mt.so.3.3.5のサイズは 9,228,719 byte です。
この状態から機能をひとつずつ削除(オプションを追加)してLibのサイズがどれくらい変化するか調べてみました。

追加したオプション  libのサイズ ダイエット分
-qt-gfx-transformed  9,204,325    -24,394 (※削除したオプション)
-qt-gfx-vnc          9,174,282    -30,043 (※削除したオプション)
-no-freetype         8,729,358   -444,924
-disable-opengl      8,729,358          0
-disable-sql         8,340,648   -388,710
-disable-xml         7,961,825   -378,823
-no-style-???  <cde,compact,motif,motifplus,platinum,sgi>
                     7,827,833   -133,992
-disable-iconview    7,675,393   -152,440
-disable-table       7,515,166   -160,227
-disable-workspace   7,421,794    -93,372
-disable-canvas      7,304,019   -117,775
-disable-network     7,002,379   -301,640
  • qt-gfx-transformed 24,394 byte
    回転フレームバッファ
  • qt-gfx-vnc 30,043 byte
    VNCサーバー機能
  • no-freetype 444,924 byte
    スケーラブルフォント表示ライブラリ
  • disable-opengl
    OpenGLライブラリはもともと組み込まれていないのサイズも変わりません。
  • disable-sql 388,710 byte
    SQLモジュール データベースを扱うライブラリです。
  • disable-xml 378,823 byte
    XMLモジュール XMLフォーマットパーサーです。
  • no-style-??? <cde,compact,motif,motifplus,platinum,sgi> 133,992 byte
    スタイル関係。とりあえずwindows意外を全て外してみました。
  • disable-iconview 152,440 byte
    アイコンビューモジュール。Windowsのデスクトップのように、ドラッグやリネームのできるアイコン表示用モジュール。
  • disable-table 160,227 byte
    テーブルモジュール。エクセルのような表を作成するモジュールです。
  • disable-workspace 93,372 byte
    ワークスペースモジュール。マルチドキュメントインターフェイス (MDI) 用です。
  • disable-canvas 117,775 byte
    キャンバスモジュール。高度な2Dのドロー系のグラフィックを扱うモジュールです。
  • disable-network 301,640 byte
    ネットワークモジュール。TCP/IPソケットクラス含むサーバ、クライアント、FTPなどネットワーク関係のモジュールです。

以上、作成するアプリケーションによっては削除できるのでは?というものをピックアップして、実際にビルドしてみました。
結果、全て適応(削除)すると 2,226,340 byte ダイエットできました。
それでも、まだ、7MByteあります。
でも、フォントとライブラリで8MByte、何とかCAT760のROMに収められるサイズになりました。
Qtはライブラリが大きい分、作成するアプリケーションサイズはかなり小さく出来ます。コンテンツまでは難しいですが、アプリケーション本体までは何とか内蔵ROMに収めれるのではないでしょうか。

ターゲットへのインストール

用意したQt/Embeddedをターゲット機へインストールするのは非常に簡単です。
環境を構築したフォルダ、今回の場合は「qt-embedded-free-3.3.5」にある「lib」というフォルダをターゲットへコピーするだけです。(libフォルダにはfontsといサブフォルダもあります)
コピー先は任意ですが、ここでは「/usr/qte」へコピーします。

  • ターゲット機から
    # mkdir /usr/qte
    # cp /mnt/qt-embedded-free-3.3.5/lib /usr/qte -a
    $ export QTDIR=/usr/qte
    $ export LD_LIBRARY_PATH=$QTDIR/lib

関連リンク

  1. CoLinuxインストール導入編
  2. CoLinuxインストール基本設定編
  3. CoLinuxインストールネットワーク設定編
  4. CoLinuxインストールdebian設定編
  5. CoLinuxインストール開発環境の構築編
  6. CoLinuxインストールQt/Embedded編
  7. CoLinuxインストールネットワーク応用編
  8. CoLinux TIPS
  9. Debian FAQ

自動リンク