Under-Construction

▲Zaurus Top | ↑Up(設定・システム) | ←Prev(Opie 環境と OPIE PIM(失敗)) | →Next(qtmail で Gmail(imap)を使う)


Cross 開発環境の構築

(2003/09/22)

やっぱり、Qt アプリを作ってみたくなって、クロス開発環境を構築することにした(開発成果が出てくることは期待しないこと)。ほとんど、チュートリアルに書いてあるままなのだが、一部、新しくなっている情報があるので、2003/09/22 時点の情報に対応してある。自分用のメモを書いたついでに公開する。

用意するもの

このドキュメントが開発の原典となる。良く読むのだ。

以下、このチュートリアルにしたがって、ツールをそろえる。まずはクロスコンパイル関係。

Zaurus 宝箱 Proからダウンロード。rpm -Uvvh で /opt/Embedix/tool/ 以下に入る。この段階で、コンソールアプリ開発のツールは揃っているはず。次は、Qtopia 関係。

Qtopia-free を使ったアプリケーションは GPL で配布しなければならないことに注意。それがいやなら有償版を使うこと。

これで、tutorial の練習問題ができる環境が構築できました。母艦上での qvfb 上での動作、実機での動作を試してみて下さい。今後、実機動作テストを頻繁にすることが考えられるので、scp が使えるように、ssh 環境を整備しておくのもよいでしょう。

qvfb エミュレーション環境

開発の初期段階は、/opt/Qtopia/dev-x86-qpe.sh を source して環境変数を設定する。そうすると、x86コードを出力するコンパイラが動作し、母艦上で動作するプログラムができる。それを実行するときの表示デバイスが qvfb である。開発の後期段階では、dev-arm-qpe.sh を source してやると、arm コードを出力するコンパイラが、実機上で動作するオブジェクトを作成するので、実機で実行させる。これが、qvfb 環境のポイントとなる。

qvfb を動作させて表示デバイスを準備したら、プログラムを直接実行することができる。

[nkon@purple nkon2]$ cd /opt/Qtopia/
[nkon@purple Qtopia]$ ls
LICENSE       bin/                 doc/        help/     pics144/    tmake/
README        dev-arm-qpe.sh       doc-sharp/  include/  plugins/
README_SHARP  dev-x86-c700-qpe.sh  etc/        lib/      qvfb_c700*
apps/         dev-x86-qpe.sh       example/    pics/     sharp/
[nkon@purple Qtopia]$ . dev-x86-qpe.sh 
!sharp-dev-x86:/opt/Qtopia$ qvfb &
[1] 2262
!sharp-dev-x86:/opt/Qtopia$ Using display 0
cd example/
!sharp-dev-x86:/opt/Qtopia/example$ tmake -o Makefile example.pro 
!sharp-dev-x86:/opt/Qtopia/example$ make
/opt/Qtopia/bin/uic examplebase.ui -o ./examplebase.h
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -fno-default-inline -DNO_DEBUG -I/opt/Qtopia/include -I/opt/Qtopia/include -o main.o main.cpp
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -fno-default-inline -DNO_DEBUG -I/opt/Qtopia/include -I/opt/Qtopia/include -o example.o example.cpp
/opt/Qtopia/bin/uic examplebase.ui -i examplebase.h -o examplebase.cpp
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -fno-default-inline -DNO_DEBUG -I/opt/Qtopia/include -I/opt/Qtopia/include -o examplebase.o examplebase.cpp
/opt/Qtopia/bin/moc example.h -o moc_example.cpp
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -fno-default-inline -DNO_DEBUG -I/opt/Qtopia/include -I/opt/Qtopia/include -o moc_example.o moc_example.cpp
/opt/Qtopia/bin/moc examplebase.h -o moc_examplebase.cpp
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -fno-default-inline -DNO_DEBUG -I/opt/Qtopia/include -I/opt/Qtopia/include -o moc_examplebase.o moc_examplebase.cpp
gcc  -o example main.o example.o examplebase.o moc_example.o moc_examplebase.o  -L/opt/Qtopia/lib -lqpe -lqte
!sharp-dev-x86:/opt/Qtopia/example$ ./example -qws
Connected to VFB server: 240 x 320 x 16
could not open for writing `/opt/Qtopia/etc/zstyles/ZBlue.style.new'

ランチャである、qpe を起動させて、その中から、/opt/Qtopia/app/XXXX の下にある *.desktop ファイルを経由して、/opt/Qtopia/bin/ 以下にあるプログラムを実行することもできる(母艦と実機でパスが同じになっていることことに注意)。いくつか足りてないファイルがあるので、実機から母艦に持ってくる。

ちなみに、Qtopia プログラムの、オプション -qws は qvfb 上で最初に起動するプログラムに付ける。つまり、qpe を起動してそのうえでアプリを動かす場合は qpe に -qws オプションを付ける。qvfb 上で直接アプリを動かす場合は、アプリのオプションに -qws を付ける。(→ Qt Reference Documents | Qt/Embedded アプリケーションの実行)

リンク


▲Zaurus Top | ↑Up(設定・システム) | ←Prev(Opie 環境と OPIE PIM(失敗)) | →Next(qtmail で Gmail(imap)を使う)


近藤靖浩