Qtopia開発環境

[ サイトトップ | 上へ | 編集 | 一覧・作成 ]

FreeBSD, Mac OS X 上の Qtopia 開発環境構築 [#j2b7dba4]

Zaurus の GUIアプリケーションを作成するためには、GUI ツールキット Qt/Embedded と デスクトップ環境 Qtopia の開発環境を構築する必要があります。

1. Qtopia 1.5.0 (free版) の入手 [#faaf2f77]

Linux Zaurus で動いている Qtopia はバージョン 1.5.0 ですが、このバージョンはすでに旧バージョン扱いとなっているらしくTrolltech のウェブページから直接たどることができません。しかしながら、[[ftp://ftp.trolltech.com/qtopia/sdk/SuSE7.0/:ftp://ftp.trolltech.com/qtopia/sdk/SuSE7.0/]]には今でもアーカイブが置いてあります。以下の二つのファイルを入手してください。Qt/Embedded もこれらのファイルに含まれています。

2. インストール [#va250ae4]

qtopia-free-1.5.0-1.i386.rpm をインストールします。

# rpm2cpio qtopia-free-1.5.0-1.i386.rpm | cpio -id # find opt -type d | xargs chmod go+rx # mv opt/Qtopia /usr/local/zaurus

3. Qt 用ユーティリティのビルド [#p61d9edc]

Qt ツールキット用のユーティリティ (uic, moc, designer, qvfb) をFreeBSD または Mac OS X 用にビルドしなおして、/usr/local/zaurus/Qtopia/bin に上書きします。

まず qtopia-free-1.5.0-1.src.rpm を展開し、X11 版 Qt (2.3.2) のソースアーカイブをとりだします。

% rpm2cpio qtopia-free-1.5.0-1.src.rpm | cpio -id 55443 blocks % ls qt-embedded-2.3.3.tar.gz qtopia-free.spec qt-x11-2.3.2.tar.gz tmake-1.8.tar.gz qtopia-free-1.5.0.tar.gz tmake18.patch

ソースを展開し、以下の要領でコンパイルします。KDEなどを使っている場合 Qt3 と干渉する可能性があるので、make install などは行わず、実行ファイルだけを /usr/local/zaurus/Qtopia/bin にコピーします。configure で -static を指定しておくことがポイントです。また、コンパイル前に以下のパッチをあてておきます。

# tar xzf qt-x11-2.3.2.tar.gz # cd qt-2.3.2 && env QTDIR=$PWD -no-opengl -no-xft -static # make && make -C tools/qvfb # install -c bin/uic bin/designer bin/moc tools/qvfb/qvfb /usr/local/zaurus/Qtopia/bin

なお、uic 等に Qt3 以降のものは使えません。必ず Qt2 用のものを用意してください。

Mac OS X の場合は configure スクリプトでプラットフォームを以下のように指定します。また、X11 のライブラリ、実行環境を必要とするので、あらかじめインストールしておきます。

# cd qt-2.3.2 && env QTDIR=$PWD -no-opengl -no-xft -static -platform macx-g++

4. 動作確認 [#pc02720d]

ここまでの作業を終えるとターゲット(実機)用のコンパイルができるようになります。

Qtopia の example をコンパイルしてみましょう。

% cp -r /usr/local/zaurus/Qtopia/example .; cd example % env TMAKEPATH=/usr/local/zaurus/Qtopia/tmake/lib/qws/linux-sharp-g++ /usr/local/zaurus/Qtopia/bin/tmake -o Makefile example.pro % env PATH=/usr/local/zaurus/Embedix/tools/bin:$PATH QTDIR=/usr/local/zaurus/Qtopia/sharp make

FreeBSD版 Qtopia のビルド [#g6e3b1a8]

前節までの作業で、Zaurus をターゲットとする Qtopia アプリケーションのビルドができるようになりましたが、Qtopia の開発パッケージにはこの他にネイティブコードのコンパイル・実行用のライブラリが含まれています。

これを有効に使えば、ホスト上でコンパイル・実行・デバッグのサイクルを回すことによって、開発効率をあげることができます。

配布されている RPM ファイルに含まれているのは Linux/i386 用のバイナリなので、これも FreeBSD 用のものに置き換えてみます。なお、Mac OS X に対してはこちらの作業は省略します。

1. GCC 2.95 のインストール [#j9da30aa]

FreeBSD 5.x 以降のベースシステムのコンパイラには gcc 3.x が採用されていますが、Qt/E, Qtopia はコンパイラのバージョンにセンシティブなので、適合バージョンである GCC 2.95 を ports でインストールします。ホストが FreeBSD 4.x 以前の場合は、ベースシステムのコンパイラが GCC 2.95 なのでこのステップは必要ありません。

# cd /usr/ports/lang/gcc295 # make install

また、以降のコンパイルが楽になるようにシンボリックリンクをはっておきます。

# ln -s /usr/local/bin/gcc295 /opt/Qtopia/bin/gcc # ln -s /usr/local/bin/g++295 /opt/Qtopia/bin/g++

2. Qt/Embedded, Qtopia のビルド [#lbaec076]

前節で qtopia-free-1.5.0-1.src.rpm から出てきたソースアーカイブを展開し、Qt/Embedded と Qtopia のソースコードにパッチをあてます。

# tar xzf qt-embedded-2.3.3.tar.gz # tar xzf qtopia-free-1.5.0.tar.gz # patch -p0 < patch-qte # patch -p0 < patch-qtopia

Qt/Embedded のライブラリ libqte.so.2.3.2 を Qtopia 向けにビルド、インストールします。

# cp qtopia-free-1.5.0/qt/qconfig-qpe.h qt-2.3.3/src/tools # cd qt-2.3.3 && env QTDIR=$PWD QTEDIR=$PWD PATH=/usr/local/zaurus/Qtopia/bin:$PATH sh -c "./configure -qconfig qpe -qvfb -depths 4,8,16,32 && make sub-src" # install -c lib/libqte.so.2.3.2 /usr/local/zaurus/Qtopia/lib

続いて Qtopia をビルド、インストールします。(先に当てたパッチで、いくつかのサンプルアプリケーションのコンパイルを諦めています。)

# cd qtopia-free-1.5.0 && env QTDIR=/usr/local/zaurus/Qtopia QPEDIR=$PWD TMAKEPATH=/usr/local/zaurus/Qtopia/tmake/lib/freebsd-g++ PATH=/usr/local/zaurus/Qtopia/bin:$PATH sh -c "./configure && make" # install -c bin/* /usr/local/zaurus/Qtopia/bin

3. 動作確認 [#ia936c8a]

Qtopia の example をコンパイルしてみましょう。

% cp -r /usr/local/zaurus/Qtopia/example .; cd example % env TMAKEPATH=/usr/local/zaurus/Qtopia/tmake/lib/qws/freebsd-g++ /usr/local/zaurus/Qtopia/bin/tmake -o Makefile example.pro % env PATH=/usr/local/zaurus/Qtopia/bin:$PATH QTDIR=/usr/local/zaurus/Qtopia make

実行には仮想フレームバッファ qvfb を使います。

% /usr/local/zaurus/Qtopia/bin/qvfb & Using display 0 % env LD_LIBRARY_PATH=/usr/local/zaurus/Qtopia/lib QTDIR=/usr/local/zaurus/Qtopia -qws Connected to VFB server: 240 x 320 x 32