LEGOのRCXモジュールをプログラムするのに、ETロボコンで用いたクロス環境を
構築していて、思いのほか苦労してしまった。
実は、クロス環境を構築していたマシンは、ライブCygwinの実験マシンであり、
これがうまくいったらMindStormクロス環境もライブCygwinに入れてしまおうという
目論見があるのである。
BrickOSのホームページには
Cygwin上のインストール方法からインストールのためのスクリプトまで用意されていて
この通りにやれば問題ないはずだったのだが・・・
実は、ライブCygwinの環境実験の途中で自分のCygwin環境のマウント情報をすべて
クリアして実験していたのである。その後、クロス環境を構築しようとして、
ルートディレクトリ(/)だけマウントしたのであるが、これだとコンパイラがぼろぼろ
エラーをはきまくる。
出しているエラーがライブラリのパスや定義の不足が原因であるのはメッセージから
あきらかだったので、コンパイルオプションにパスを追加したり色々と手を打って、
コンパイラ自体は生成したのであるが、あまりにもエラーが多く、何かがおかしいと
不思議に思っていた。
BrickOSのコンパイルでも案の定エラーが発生し、Makefileの作りの問題でコンパイルオプションを
手軽には渡せないので、原因の追究をきちんとすることにした。
そうしたら、実は、Cygwinは/bin, /libを /usr/bin, /usr/libにマウントしていて、
ライブラリは両方にあることを前提に多くのプログラムが動いていることが分かった。
普通に環境を構築すれば全然問題ないのであったが、色々と実験を繰り返すうちに
標準環境がなくなっていたのである。
トラブルの原因として、もっとも嫌らしいのは、Cygwinがマウント情報をWindowsのレジストリに保持する点だろう。
UNIXのように起動時にファイルからマウント情報を読み取ってくれれば、このようなことは
発生しなかったのである。
まぁ、ともかく、一段落なので、これから確認作業をして、CDROMでBrickOSの実行環境を
配れるようにしたいものだ。
(ソースからコンパイルするというのは、多少初心者には敷居が高いのでライブCygwinで
何もしないでBrickOSが使えるとうれしいのである)