2008年11月13日木曜日

Vine Linuxでマイコン開発(1)

Macで敗北したので、会社のVAIOをWindows XP Home + Vine Linux 4.2のデュアルブートにすることに。

Vineを本格的に触るのは、学生時代以来だから実に7年半ぶり。すっかりインストーラも洗練されて、特に問題無くグラフィカルログイン可能な状態にまで持って来れた。

Vine 4.2の特筆すべき点は、WinXPに比べた時に格段に軽く感じる点ではないかと思う。Firefox 3.0.3を起動するにしても、WinXPに比べてかなり速い。これは良い。今回はクロス開発環境を追い求めてLinuxを選択し、かつ非力なノートPC (Pentium M 900MHz + 256MB RAM) だったのでVineを選んだが、Vineのラップトップというのも良いかも知れない。

さて、Linuxが一旦動き出すと、H8用のクロス開発環境の準備も格段に楽になる。「Tools for Linux」のページから、MES2.0、H8ユーザプログラム用の GNU binutils、GNU gcc、及びRedHat newlibのソースRPMを頂き、件のVineでバイナリRPMをリビルドするだけ。

この際には、以下のコマンドを実行した。

% cd ~/rpm/SRPM
% (カレントディレクトリにソースRPMをコピー)
% rpm -i <パッケージ名>.src.rpm
% cd ~/rpm/SPECS
% rpmbuild -bb <パッケージ名>.spec
% cd ~/rpm/RPMS/i386
% su
% rpm -Uvh <パッケージ名>.i386.rpm

但し、上記ソースRPMのSPECファイルそのままではリビルドが出来ない。SPECファイル内に書かれている”Copyright: “という行が互換性エラーを吐くので、ここをエディタで”License: “と書き換える。RPMコマンドのバージョンによってSPECファイルの書式が変わったのかな?

あと、newlibのリビルド中にstripコマンドが「このファイル形式は認識出来ん」とエラーを吐く。これは、先にインストールしたH8用のbinutilsに入っているstripではなく、ホスト環境(i386)用のstripを使ってしまっているため。H8用のstripがどこに入っているか調べるには、いかのコマンドを実行する。

% rpm -ql h8-binutils-elf | grep strip

結果、”/usr/local/bin/h8300-elf-strip”としてインストールされているのが分かるので、とりあえずnewlibのリビルド中だけ対症療法としてstripという名前のシンボリックリンクを作っておく。ホストのstripは/usr/bin/stripだが、PATH環境変数によって/usr/binより/usr/local/binを先に見るようになっている。従って、以下のコマンドでリンクを張る。

% cd /usr/local/bin
% ln -sf h8300-elf-strip strip

これで無事ビルド完了。このシンボリックリンクはnewlibのリビルド後に消せば良い。

(※追記: 残念なことにnewlibのSRPMからのビルドは出来なかった)

これだけでクロス開発環境が導入できる。楽ちんである。Macであれだけはまったのは何だったんだろう・・・。

0 件のコメント: