ubuntu で Qt/E 開発

めざせ Zaurus で GoogleMap ということで、ひとまず開発環境を整えないとです。

SLザウルスが出たのがだいぶ昔なので、Ubuntu に開発環境を構築できるのか? という心配もありましたが、なんとか一応開発できる環境が整いました。

ただ、色々試してみたのですが、x86環境でデバッグするためのqvfb用のバイナリがコンパイルエラーで作れませんでした。ホストの gcc が 2.96 じゃないとコンパイルできないようです。

でも、それじゃいちいち実機でデバッグしないといけなくなるので、qvfbを使わずに x86 上である程度デバッグできるように工夫してみました。

ちなみに使用した OS は Ubuntu 8.04 です。

1. ダウンロード

必要なものをダウンロードします。

ザウルスサポートステーションLinux関連 開発ツール一覧より

ザウルスサポートステーションライブラリリファレンスより

X/Qt Server Projectより (Trolltech社のサイトにはもうありませんでした)

以下は必須ではありませんが、開発入門として参考になるドキュメントです。

2. インストール

Ubuntu はdebian 系なので、一般的には alien を使って rpm を deb パッケージに変換してインストールするのが普通なのですが、私は面倒なので、rpmでインストールしてしまいました。

まずrpmをインストールします。

$ sudo apt-get install rpm 

rpmデータベースを作成し、rpm によるインストールを可能にします。

$ sudo mkdir /var/lib/rpm
$ sudo rpmdb --initdb

上でダウンロードしたrpmをインストールします。qtopia-free だけ依存関係のエラーがでるので–nodepsで強制インストールします。

$ sudo rpm -ivh binutils-cross-arm-2.11.2-0.i386.rpm
$ sudo rpm -ivh gcc-cross-sa1100-2.95.2-0.i386.rpm
$ sudo rpm -ivh glibc-arm-2.2.2-0.i386.rpm
$ sudo rpm -ivh linux-headers-arm-sa1100-2.4.6-3.i386.rpm
$ sudo rpm -ivh --nodeps qtopia-free-1.5.0-1.i386.rpm

Qtopia に 対して Zaurus 用の差分を追加します。libqte も差し替えます。

$ cd /opt/Qtopia
$ sudo tar xzf ??????/sharpsdk-pub-20021227.tar.gz
$ cd /opt/Qtopia/sharp/lib
$ mv libqte.so.2.3.2 libqte.so.2.3.2-bak
$ sudo cp ??????/libqte.so.2.3.2.gz .
$ sudo gzip -d libqte.so.2.3.2.gz 

tmake の設定ファイル(?)を差し替えます。

$ cd /opt/Qtopia/tmake/lib/qws/
$ sudo rm -rf linux-sharp-g++
$ sudo tar xzf ???????/tmake-sharp.tar.gz

以上でインストールは完了です。

3. 設定スクリプトの編集

ビルドする際に必要な環境変数等を設定するスクリプトが /opt/Qtopia/dev-arm-qpe.sh にあります。

このファイルのままでは、tmake にパスが通っていないため、tmake のパスを追加しておきます。

#!/bin/bash
CROSSCOMPILE=/opt/Embedix/tools
QPEDIR=/opt/Qtopia/sharp
QTDIR=/opt/Qtopia/sharp
PATH=$QTDIR/bin:$QPEDIR/bin:$CROSSCOMPILE/bin:$QPEDIR/bin:/ope/Qtopia/tmake/bin:$PATH
TMAKEPATH=/opt/Qtopia/tmake/lib/qws/linux-sharp-g++/
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
PS1='!sharp-dev-arm\u@\h:\w\$ '
export QPEDIR QTDIR PATH TMAKEPATH LD_LIBRARY_PATH PS1

これで arm バイナリをビルドする環境が整いました。

長くなったので、x86環境などの続きはまた今度。

ザウルスでGoogleMap!?

最近周りに iPhone を持つ人がちらほら出てきました。ガジェットとしては非常に気になるのですが、携帯として考えるとちょっと機能不足なので、「欲しい!」とは思いつつも「買いたい!」までの勢いはありません。

ちょっといじらせて貰うと、やっぱりブラウザによるHP閲覧とGoogleMapが光ります。3G回線使っていつでもどこでもWebブラウズできるのは魅力的ですね。

私はZaurus (SL-C1000)を持っており、bitWarp回線を契約しているので、重いながらも一応いつでもどこでもWebブラウズはできますが、純正ZaurusOS(Qt/E)ではGoogleMapが動かないんですよね。

前に pdaXrom の Firefox でも試してみましたが、確かスクロールが動かなかった気がします。

GoogleMapから地図データさえ取り出せればZaurusでも表示できそうだなぁと、GoogleMapの地図をダウンロードするツールを探していたら、そのものずばりを作っている人がいました。

実用工房さんGM_Liteです。

JavaScriptを駆使してZaurusのOpera 7でもGoogleMapさながらの操作が可能になります。うーん。すごい。

でも、非力なZaurusでしかもブラウザ上のJavaScriptで組まれているため、ちょっと重いのが難点・・。あと、個人的には、指定の縮尺にない画像は、1つ2つ広域な画像を拡大して使ってほしいなぁ。地図画像のファイルサイズも馬鹿にできないので。

ということで拡大するバージョンを作ってみました。

画像がない場合を判定するために、img タグの onError ハンドラを使って実現しました。画像の読み込みに失敗すると、ハンドラが動いて1つ広域の画像を取得する・・・のですが、Opera 7 では動きませんでした (T-T)

Opera 7 には onError ハンドラがサポートされていないようでした。PCのFirefoxでは動いたのに・・・。

(ここまでが前振り。長っ!)

うー。ちょっとくやしいから、Qt/Eのネイティブアプリでつくってやる!

と、Web上で宣言することで、自分のモチベーションをあげてみることにしました。

Qt/E は example をコンパイルするくらいしかやったことありません。

C++はちょっと読めるけど、書けません。(CはOK)

まぁ、ヘタレなので途中で投げ出すかもしれませんが、勉強がてらやってみようかなと。

気長にね。

ぷちのいず発生

ぷちのいずをたれ流し始めてみました。

基本的にノンジャンルで自分のためのメモやひとりごとブログになると思います。

よろしくお願いします。