2005 年 8 月 12 日 (金) 自宅

家で寝ていると、ちょっと現実逃避のことをしてみます。 まあ、他にもとっくにやっている人はいると思うけどね…。 てなことで、リナザウ SL-C3000 の基本クロス開発環境を、 FreeBSD 5.4 の常用マシンに入れてみました。

まずは、ports/devel/cross-linux-zaurus (cross-linux-zaurus-1.0.tar.gz) てな感じのものをさっくりと作ってみました。 普通に /usr/ports で上記 tar.gz を展開して、

# cd /usr/ports/devel/cross-linux-zaurus
# make clean install clean

で Zaurus 開発環境をインストールできます (実行には x86 の Linux エミュレーション環境が必要です)。 主なファイルは /compat/linux/opt/Embedix/ 以下にインストールされます。

ライブラリは SL-C3000 から拾ってきた方が良さそうなので、ライブラリは上書きします (192.168.11.9 が Linux ザウルスのアドレス)。

# cd /compat/linux/opt/Embedix/tools/arm-linux/lib
# ssh zaurus@192.168.11.9 "chdir /lib ; tar cf - ." | tar xvfp -

SL-C3000 で不満なのは、*BSD 屋さんとしては何と言っても csh が入っていないことで、 とりあえずこの辺を参考に tcsh をコンパイルしてみることに。

えっと、この辺から、 tcsh-6.14.00.tar.gz を持ってきて展開します。 で、いろいろ試した結果以下のような手順でコンパイルできました。

まず、SL-C3000 では libtermcap は libncurses のようなので、 次のようにリンクを張ります。

# cd /compat/linux/opt/Embedix/tools/arm-linux/lib
# ln -s libncurses.so.4.2 libtermcap.so

で、次の内容のファイルを build-tcsh.sh として、 tcsh-6.14.00.tar.gz を展開したディレクトリ tcsh-6.14.00 に置きます。

#!/bin/sh
make clean
./configure
make gethost
make tc.defs.c
cp gethost tc.defs.c /tmp
env ac_cv_func_getpgrp_void=yes ac_cv_func_setpgrp_void=yes \
    CC=/compat/linux/opt/Embedix/tools/bin/arm-linux-gcc \
    ./configure --build=arm-zaurus-linux -host=i386-pc-freebsd \
    --libdir=/compat/linux/opt/Embedix/tools/arm-linux/lib
cp /tmp/gethost /tmp/tc.defs.c .
make 
/compat/linux/opt/Embedix/tools/bin/arm-linux-strip tcsh

あとは、

% sh build-tcsh.sh

で、カレントディレクトリに tcsh のバイナリが出来てきます。

% ls -l tcsh
-rwxr-xr-x  1 hosokawa  staff  316976  8 13 01:41 tcsh
% file tcsh
tcsh: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0,
dynamically linked (uses shared libs), stripped

あとはこれを Zaurus 側に scp して、/usr/bin/csh に置くだけです。 おお、だいぶ快適になった…。


このサイトへのリンクには何ら許可は必要ありません。 ただし、無断で写真をダウンロードして他の場所に掲載したり、 画像加工の素材として利用するなど、再配布に当たる行為はしないようにしてください。 また、このサイトへのリンクであることを明示すること無しに <img src="..."> などで他のページの内部に画像ファイルを取り込むことも、 ご遠慮下さい。