前章:CoLinuxインストール開発環境の構築編
前章まででCoLinuxで、SHボード用バイナリが作成できるようになりました。
こんどは、Qt/Embeddedをインストールして見ましょう。
QtやQt/EmbeddedについてはWebを検索すると沢山の解説が見つかります。
その中で、非常に分かりやすく解説されているページがありますので紹介しておきます。
とりあえず早く動かして見たいという方は、導入までの手順を簡単にまとめましたので、次の「Qt/Embeddedのインストール」から実行してみてください。
Qtって何? Qt/Embeddedって何? †
このページを読むとQtがどんなものかが分かります。
準備 †
- Qt/Embeddedのコンパイル
以降の説明をSH4用として説明します。SH3用の場合は4を3に変更してください。
- ソースのダウンロード
トロールテック社からオープンソース版のソースファイルオープンソース版のソースファイルをダウンロードします。
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
- 展開
$ tar xvzf qt-embedded-free-3.3.5.tar.gz
- コンパイル準備(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++
- コンフィグレーション
$ ./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
- コンパイル
$ make sub-src
$ make sub-plugins
テスト(サンプルプログラムの実行) †
- 動かしてみよう
- サンプルプログラムのコンパイル
$ cd example/hello
$ make
- ターゲット機から実行する
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」へコピーします。
関連リンク †
- CoLinuxインストール導入編
- CoLinuxインストール基本設定編
- CoLinuxインストールネットワーク設定編
- CoLinuxインストールdebian設定編
- CoLinuxインストール開発環境の構築編
- CoLinuxインストールQt/Embedded編
- CoLinuxインストールネットワーク応用編
- CoLinux TIPS
- Debian FAQ
自動リンク