2004年11月16日

Zaurus開発環境構築

Zaurus SL-C3000を買ってしまいました。初PDAなのですが、これは非常に楽しいおもちゃです。

だがしかし、「Zaurusはいかに面白いか」というのが今回の話題ではなくて、Zaurus用のソフトを開発するための環境をGentoo上に作ろうというのが本題です。ZaurusはLinuxでしかもQtなので、GentooでKDEを使ってる身としては非常に親近感がわきます。が、似てても大夫違うので開発環境を構築するにはちょっと面倒です。

まず、ライブラリやツール類がrpmで提供されているため、rpmを入れるところからはじめないといけません。Gentooでrpmって本当に動くんでしょうか?

# emerge rpm

問題なく入りました。あとは必要なファイルをひたすらダウンロードします。

シャープのザウルス宝箱Proソフトウェア資料ページより
qte_tutorial_030122_a300.pdf
クラスライブラリリファレンスページより
libqte.so.2.3.2.gz
tmake-sharp.tar.gz

開発ツール一覧ページより
binutils-cross-arm-2.11.2-0.i386.rpm
gcc-cross-sa1100-2.95.2-0.i386.rpm
glibc-arm-2.2.2-0.i386.rpm
linux-headers-arm-sa1100-2.4.6-3.i386.rpm
シャープライブラリダウンロードより
sharpsdk-pub-20021227.tar.gz

をダウンロードしました。しかし問題はqtopiaです。TrollTechには1.6以降のバージョンしかありませんでした。が、どこかのサイトでどうにか見つけました。メモるのを忘れたのでどこだかわかりません(すみません)。
qtopia-free-1.5.0-1.i386.rpm


これでダウンロードしなければならないものは全部(のハズ)です。ではインストール。

# rpm -Uvh gcc-cross-sa1100-2.95.2-0.i386.rpm
# rpm -Uvh glibc-arm-2.2.2-0.i386.rpm
# rpm -Uvh linux-headers-arm-sa1100-2.4.6-3.i386.rpm
# rpm -Uvh binutils-cross-arm-2.11.2-0.i386.rpm

ここまではうまく入りました。が、

# rpm -Uvh qtopia-free-1.5.0-1.i386.rpm

エラー: Failed dependencies:
/bin/sh is needed by qtopia-free-1.5.0-1
/usr/bin/perl is needed by qtopia-free-1.5.0-1
libX11.so.6 is needed by qtopia-free-1.5.0-1
libXext.so.6 is needed by qtopia-free-1.5.0-1
libc.so.6(GLIBC_2.0) is needed by qtopia-free-1.5.0-1
libc.so.6(GLIBC_2.1) is needed by qtopia-free-1.5.0-1
libc.so.6(GLIBC_2.2) is needed by qtopia-free-1.5.0-1
libcrypt.so.1(GLIBC_2.0) is needed by qtopia-free-1.5.0-1
libdl.so.2(GLIBC_2.0) is needed by qtopia-free-1.5.0-1
libdl.so.2(GLIBC_2.1) is needed by qtopia-free-1.5.0-1
libm.so.6(GLIBC_2.0) is needed by qtopia-free-1.5.0-1
libpthread.so.0(GLIBC_2.0) is needed by qtopia-free-1.5.0-1
libpthread.so.0(GLIBC_2.1) is needed by qtopia-free-1.5.0-1
libutil.so.1(GLIBC_2.0) is needed by qtopia-free-1.5.0-1
libz.so.1 is needed by qtopia-free-1.5.0-1

実際にはどのファイルも入っているので問題はないはずですが、想像するに、rpmで入れてないから怒られているのではないかと。そこで --nodepsで無理矢理入れます。

# rpm -Uvh --nodeps qtopia-free-1.5.0-1.i386.rpm

入ったのでとりあえず良しとします。つぎはtmakeです。

# tar zxvf tmake-sharp.tar.gz
# cp -r linux-sharp-g++ /opt/Qtopia/tmake/lib/qws/

あとはsharpsdkとlibqte。

# cp sharpsdk-pub-20021227.tar.gz /opt/Qtopia/
# cd /opt/Qtopia
# tar zxvf sharpsdk-pub-20021227.tar.gz
# gunzip libqte.so.2.3.2.gz
# cp libqte.so.2.3.2 /opt/Qtopia/sharp/lib

これをやってみると、tmake-sharpも一緒に入っているようです。ということは先にやったtmake-sharp.tar.gzのインストールは不要なのかもしれません。

いずれにしてもこれで入れるべきものは入ったはず。

早速サンプルソースでテスト。

$ cd /opt/Qtopia
$ . dev-x86-qpe.sh
$ cd example
$ tmake -o Makefile example.pro
$ make

ここで「undefined reference to `QWidget::〜」というエラーがたくさん出ました。

gcc -o example main.o example.o examplebase.o moc_example.o moc_examplebase.o -L/opt/Qtopia/lib -lqpe -lqte
main.o(.text+0x39): In function `main':

からつづくエラー。どうやらリンクに失敗しているようです。gccのバージョンが問題ではないかと勝手に推測。現在入っているのはgcc-3.3.4。QtopiaのLibはgcc-2.9でビルドされているようです。そこで(ちょっと怖いけど)gcc-2.9を入れてみます。

# /usr/portage/sys-devel/gcc
# ls

幸いgcc-2.95.3-r8.ebuildというのがあった。

# emerge gcc-2.95.3-r8.ebuild

おそらくこのままではemergeのさいに2.95を使ってしまうと思われるので3.3.4を使うように戻す。

# gcc-config -l
[1] i686-pc-linux-gnu-2.95.3 *
[2] i686-pc-linux-gnu-3.3.4
# gcc-config -P i686-pc-linux-gnu-3.3.4
[1] i686-pc-linux-gnu-2.95.3
[2] i686-pc-linux-gnu-3.3.4 *

これで元に戻りました。

# cd /usr/lib/gcc-lib/i686-pc-linux-gnu
# ls

2.95.3 3.3.4

# cd /usr/i686-pc-linux-gnu/gcc-bin
# ls

2.95 3.3

ここに二つとも入っているのでおそらく大丈夫だと思うのですが、当然/usr/bin/gccは一つしかありません。果たしてこれでいいのかどうかgccを共存させたことがないのでいまいちわかりませんが多分いいのでしょう。もし今後問題が発生するようなら3.3.4を入れ直すことにして、今はQtopiaの方を確認してみます。

# gcc-config -P i686-pc-linux-gnu-2.95.3
$ make clean
$ make

しかし変化ありません。gcc-configではダメなのかもしれません。ためしにMakefileでgccのパスを直書きしてみます。

CC = /usr/i686-pc-linux-gnu/gcc-bin/2.95/gcc
CXX = /usr/i686-pc-linux-gnu/gcc-bin/2.95/g++

$ make

これでコンパイルできました。しかし、

$ cd /opt/Qtopia
$ . dev-x86-qpe.sh
$ qvfb &

ここでkdeがクラッシュしてしまいます。qt関係の問題でしょうか? 仕方なくGnomeを起動して同じように

$ cd /opt/Qtopia
$ . dev-x86-qpe.sh
$ qvfb &

今度はQtopiaのウインドウが開きました。しかし

$ ./example -qws example

ここでエラー。

・・・ここから先、Gnome環境が整っていないためKDEに戻って書いているためエラーメッセージなどがわかりません。Gnome全然使っていなかったので日本語入力など全くできない状態です。Gnome環境を整えるか、KDEのクラッシュ問題を解決するか・・・。

とりあえず今日はここまで。

cpiblog00262 at 21:58 │Comments(3)TrackBack(1)Gentoo Memo 

トラックバックURL

この記事へのトラックバック

1. HDDなしでは、生きられない?  [ ☆志賀敏宏−電脳 経営コンサルタントの視点☆ ]   2004年11月27日 21:07
HDD付PDA羨ましいです。トラックバックさせてください。

この記事へのコメント

1. Posted by chr    2004年11月24日 21:19
はじめまして
Gentoo For Zaurus 0.2.2
http://forums.gentoo.org/viewtopic.php?t=131240
時間があれば、これに挑戦してみませんか?
現在、取り寄せ中の身でして、届いたら挑戦してみる予定です。
2. Posted by H.WAKIMOTO    2004年12月02日 04:50
Gentoo For Zaurus、気になってるんですよ〜。時間があったらいじってみたいとは思ってるんですが、初PDAなので何もかもが新しい体験で、現状でもかなり楽しんでます。しかしマニアックなおもちゃですね、SL-C3000。Linuxユーザにはこんな楽しいものはありませんよ、ほんと。
3. Posted by chr    2004年12月04日 01:31
SL-C750でGentoo For Zaurus(GFZ)を触った感じでは、NFSサーバに展開したGFZのツリーをZaurusからマウントしてchroot してemerge でpackage作ってZaurusに入れる見たいな感じなのかなと思います。

結局Zaurusにはrpmで作成した開発環境の方がいいような気もします。HDDが付いたことでかなり楽しめそうですね。
つい先日発注しました(私物じゃない)。僕はUSB周りに期待してます。

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔