SigScheme

組込み向けのSchemeインタープリタ、SigSchemeをザウルス(pdaXrom)にインストールしてみた。C言語で書かれているのでザウルスで動かすのはそれほど難しくないはず(特殊なライブラリやXも使ってないしね)。

SigSchemeのインストールは普通に、

$ ./configure
$ make
$ su
# make install

でいける($は一般ユーザで、#はrootでコマンドを実行したことを表す)。これにクロスコンパイル用のオプションを加えれば良いだけなので、それほど大変ではないはず。ビルド環境は、pdaXrom for ix86 PC on VMware PlayerにpdaXrom本家のCross SDKをインストールしたものを使用。ちなみに、Cross SDKのインストールは本家の"SDK installation"のやり方とは少し変わっているようだ。

# cd /
# tar jxf (どこか)/cross-sdk-armv5tel-cacko-linux-3.4.5-2.2.5-softfloat.tar.bz2

SigSchemeのビルドログ

# wget http://kzk9.net/software/sigscheme/sigscheme-0.6.1.tar.gz
# tar zxf sigscheme-0.6.1.tar.gz
# cd sigscheme-0.6.1
# mkdir build_arm
# cd build_arm
# export PATH=/opt/cross/arm/3.4.5-xscale-softvfp/bin:$PATH
# ../configure --host=armv5tel-cacko-linux --build=i686-linux --prefix=/usr/local
# make
# mkdir ipkg_tmp
# make DESTDIR=`pwd`/ipkg_tmp install
# armv5tel-linux-strip ipkg_tmp/usr/local/bin/*
# mkdir ipkg_tmp/CONTROL
# cat > ipkg_tmp/CONTROL/control
  Package: sigscheme
  Version: 0.6.1
  Architecture: arm5tel
  Maintainer:
  Description: A R5RS compatible Scheme Interpreter for embedded use
  (Ctrl-Dで抜ける)
# mkipkg ipkg_tmp

これで、SigSchemeのパッケージが作成されるので、あとはザウルスにこのパッケージをインストールすればよい。ただし、わたしの環境ではmkipkgが正しく動作せず、

tar: --exclude=CONTROL: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors

というエラーが出るので、mkipkgを下のように書き換えました(上が元ので、下が書き換えたもの)。

# vi /opt/cross/arm/3.4.5-xscale-softvfp/bin/mkipkg
  # tar -C $pkg_dir -cf $tmp_dir/data.tar . --exclude=$CONTROL                    
  tar -C $pkg_dir --exclude=$CONTROL -cf $tmp_dir/data.tar .

これでmkipkgが正しく動作しました。
これでSigSchemeをザウルスで使えるようになりました。ただし、まだ簡単なチェックしかしてないのでちゃんと動いているかはわからない。後で、テストプログラムを動かしてみないといけないな。
しかし、ザウルスでSchemeを使うことってあるのかなあ・・・。まあ、Schemeインタープリタが動くというのは単純に嬉しいけどね。
よし、次はHaskellだな(マジ!?)