特集
» 2004年12月18日 10時00分 公開

UNIX USER1月号「デスクトップで動かす・学ぶQt/Embedded」より転載:Qt/Embeddedのインストール――第1回 フレームバッファでQtアプリ(その3) (1/5)

Qt/Embeddedを使って、Linuxデスクトップマシンで組み込みのGUIプログラミングを体験する本連載。今回はQt/Embeddedのインストールの後、動作確認を行い、デスクトップ上でフレームバッファを使用してプログラムが動かせるまでを解説します。

[杉田研治,UNIX USER]
Qt/Embeddedのインストール

 次はQt/Embeddedのインストールです。

環境変数の設定

 先ほどのQt/X11での環境設定を破棄し、表10のように設定します。今回はQt/Embeddedで開発を行うので、ここで設定した環境変数が開発時の設定となります。PATHにQt/X11のbinを追加しているのは、Qt Designerなどのツールを使用するためです。

表10 Qt/Embeddedでの環境設定
環境変数 設定内容
QTDIR /usr/local/qt/qt-embedded-free-3.3.3を設定
MANPATH $QTDIR/doc/manを追加
LD_LIBRARY_PATH $QTDIR/libを追加
PATH $QTDIR/binと/usr/local/qt/qt-x11-free-3.3.3/binを追加

コンフィグレーション

 Qt/EmbeddedのconfigureスクリプトのオプションはX11のものと少し違います。オプション「-help」で、使用できるオプションを確認できます。今回は実行例2のようにコンフィグレーションします。

実行例2 Qt/Embeddedのコンフィグレーション
$ unset which
./configure -v                  \  ← 詳細メッセージ
>             -thread             \  ← スレッド
>             -depths 8,16,32     \
                     ↑ フレームバッファの深さ
>             -qt-gfx-transformed \
                     ↑ 回転フレームバッファ
>             -qt-gfx-matrox      \
                     ↑ Matroxグラフィックアクセラレータ
                        (今回の構成で使用しているため)
>             -qt-gfx-qvfb        \
                     ↑ 仮想フレームバッファqvfb
>             -qt-gfx-vnc         \  ← VNCサーバー機能
>             -debug                 ← デバッグモード

 この工程は、表8の環境で約8〜9分かかります。Qt/Embeddedでは、デフォルトで例外*とRTTI*が無効化されるようにコンパイラオプション「-fno-exceptions」と「-fno-rtti」*が設定されます。Qt/X11ではRTTIが有効になったままなので、開発時に注意が必要です。

コンパイル

 Qt/EmbeddedのほうはQt/X11のようにすべてをコンパイルする必要はありません。Qt DesignerやQt LinguistもQt/Embeddedで動作はしますが、コンソールで使用しても仕方がないですし、日本語入力もできません。フットプリント削減のために不要な機能を使わないようQt/Embeddedをインストールした場合には、これらの開発用のツールはQt/Embeddedではコンパイルもできなくなります(フットプリント削減については次回説明)。また、クロス環境ではほとんどの場合不要でしょう。

 必要なものをコンパイルするためにmakeターゲットは表11表12のようになります。まずは、ライブラリをコンパイルしましょう。

$ make sub-src

 ライブラリのみならば、表8の環境で1時間20分強で済みました。次に、プラグインをコンパイルします。

$ make sub-plugins

 こちらは4分ほどかかりました。Qt/X11でコンパイルしたuicをQt/Embeddedのbinにコピーかシンボリックリンクします。

リスト2 include/asm-i386/system.hのswitch_to()マクロ関数
$ cp /usr/local/qt/qt-x11-free-3.3.3/bin/uic \
> $QTDIR/bin

 コピーが必要なのは、Qt/Embeddedのサンプルコードなどでuicの絶対パスとしてQt/Embeddedのbinを参照するように扱われているためです。

表11 Qt/Embeddedのmakeターゲット
makeターゲット 説明
sub-src ライブラリのコンパイル
sub-tools 開発用ツールで、ターゲット機ではなく、
開発機で動かすツール
sub-plugins プラグインのコンパイル
sub-examples サンプルコード。必要に応じて、個々にコンパイル可能
sub-tutorial チュートリアル。必要に応じてコンパイルすれば良い

表12 sub-toolsで作成されるもの
作成されるファイル 説明
assistant Qt/X11でコンパイル済み
designer 同上
linguist 同上
qtconfig Qt/X11でコンパイル済み
qvfb Qt/X11で追加コンパイル済み

このページで出てきた専門用語
例外
C++の例外処理機能(Exception Handling)。コストがかかるため組み込み系ではコンパイル時に機能を抑制することが多い。

RTTI
RTTI(Run Time Type Information、実行時型情報)。実行時にオブジェクトの型を識別するための情報。コストがかかるため、組み込み系ではコンパイル時に機能を抑制する場合がある。しかし、プログラミングしていくうえで、安全なダウンキャストなどのために有用な機能なので、QtではQObjectに効率を損なわないqt_cast()を持っている。

コンパイラオプション「-fno-exceptions」と「-fno-rtti」
GCC C++コンパイラにおいて、C++の例外とRTTIを無効化するオプション。


       1|2|3|4|5 次のページへ

Copyright(c)2010 SOFTBANK Creative Inc. All rights reserved.

注目のテーマ