Zaurus

てのひら工房への道 其の弐(gcc編)

前回に続いてLinixZaurus単体での開発環境を追求して行きます。今回はgcc。C/C++などでのアプリケーションの開発が可能になります。

まずdev_img1.3をダウンロードしてきましょう。この辺の解説は結構出尽くされてるので一気に行きます。ダウンロードしたファイルをSDやCFなどのメディアに置いてください。15M以上ある大きなファイルなので、本体ROMではちょっと苦しいかもしれないです。
次にそのファイルをマウントする位置を作ります。僕は/mnt/devというディレクトリを作ってそこにマウントすることにしました。/etc/fstabに登録もしましたが、再起動時の自動マウントは控えておきます。起動時に自動マウントに失敗してSystem自体が立ち上がらなくなるのを防ぐためですが、まぁそこまで敏感になるまでも無いって話もありますが。再起動時にスクリプト一発で他の設定もろもろと一緒にマウントしちゃえばいいってこともあるので、そのへんは自己責任でどうぞ。
初回のみの作業としてマウントした後にrootで/mnt/dev/bin/compiler_setup.shを編集し実行します。

MOUNT_DIR="/mnt/dev"
先程作ったマウント位置を記述して実行することで、スクリプトが自動的に開発環境を構築してくれます。
ちなみに、dev_img1.3のファイルを置く場所はext2フォーマットでないとパーミッション関係で不具合が出るらしいのでext2フォーマットの場所に置きましょう。専用のパーティション切っても良いかもしれないですが、その辺は自分の知識と相談で。
また、ソース展開用にsourcesとか名前をつけたディレクトリを掘っておくと整理が楽になります。その際、~zaurus/直下だとディスクスペースが足りなくなる場合があるのでSDやCFメディアにに作って~zaurus/にシンボリックリンクを張るのがunixっぽくて格好いいかもしれないですね(笑)
$ cd /mnt/card
$ mkdir sources
$ cd
$ ln -s /mnt/card/sources
さらに、gcc等が実行時に使うテンポラリスペースが標準では少しこころもとないので、こいつも外部メディア上にディレクトリを掘ってそこを使うように設定します。
$ cd /mnt/card
$ mkdir tmp
.bashrc等に環境変数TEMPを設定することでツール自身がそこをテンポラリスペースとして使うようになります。実行を忘れないように。
export TEMP /mnt/card/tmp
$ . .bashrc
さて、これでZaurus単体でのC/C++開発環境が整った訳ですが、hello worldもなんですし、いきなりどっかからソース引っ張って来てコンパイルしちゃいます^^;
なぜか標準でインストールされてるwgetってツールがあるのですが、こいつのバージョンが1.7と少し古いのでこいつをターゲットにしちゃいましょう。

どこぞで拾って来たソースをZaurusに転送した後、展開します。wgetそのものを使って取って来るのも良い感じです。

$ cd ~/sources
$ wget ftp://sunsite.sut.ac.jp/pub/archives/gnu/wget/wget-1.8.2.tar.gz
$ tar zvxf wget-1.8.2.tar.gz
あとは普通にコンパイルできちゃいます。
$ cd wget-1.8.2
$ ./configure
$ make
srcディレクトリの下にwgetのバイナリができています。本来ならmake installでインストールするのですが、マニュアルとか要らない物もインストールされちゃうのでバイナリだけ手動インストールします。
注意したいのはプリインストールしてあるwgetよりもPATHの設定で前の位置にインストールしなければならない事です。今回は/usr/binの下から実体へのリンクが貼ってあったのでそのリンクを消してそこにインストールしちゃいました。
$ cd /usr/bin
$ ls -l wget
lrwxrwxrwx    1 root     root           12 Jan  1  1970 wget -> /usr/bin.rom/wget

$ cp ~/source/wget-1.8.2/src/wget .
ってな感じで。
Ver1.7ではうまく動かなかったページ取りこみが思ったように動くようになったので満足です。
折角ですのでできたバイナリを置いておきます。

wget-1.8.2

おまけ
bison-1.28

2003/02/10追記
ROMのバージョンアップをするとcompiler_setup.shで行ったリンク張りに不整合が出てきてしまうっぽいのでcompiler_setup.shをもう一度実行するのがいいっぽいです。

2003/04/25追記
dev_img1.3ではstat.h関連でリンク時に不具合が出るようです。こちらでこちら参照。

2003/02/06