AVR-gccがCygwin上でも走るようです。

更新 : 2001/01/14

   Cygwinについて

●Cygwinとは?

CygwinはWindows上でGNUツール類を走らせるためのフリーのツールです。これによりAVR-GCCなどのUNIX用のアプリが走る可能性があります。またいらなくなったらディレクトリごと消すだけです。Cygwinそのものについては次の場所を見てください。

・Cygwin情報
CygwinのDLL(cygwin1.dll)関連に詳しい。Cygwinの開発者の一人のページ。

・Cygwinを使う
Cygwin上でのGNUツール類の情報。

・Cygwin Infomation
コンパイル、make情報。

・Binary Wiz
Cygwin上でNEC V850、SHなどのクロスコンパイラ環境を構築。その他FPGAなど。必見。

これらあたりがポインタになると思います。以前別件で試したときは正直使える状況ではなかったような印象でしたが、最近使ってみると、これが使える(きちんとmakeできるものが多くなった)。現在のバージョンではいくつかの修正を行うことでコンパイルが可能となっています。

追伸(2001/01/14)
最新バージョンでセットアップしてみました。現在のバージョンでこのレポートは更新されています。バージョンは次のとおり。

cygwin1.1.7
binutils-010113.tar.bz2
gcc-core-20010108.tar.gz
avr-libc-20001125.tar.gz

以前のバージョンのものはここに置いておきます。

   Cygwinのセットアップ

●Cygwinをセットアップしてみる

セットアップについても上のページを見たほうがいいのですが、一応私の時の過程を記録しときたいと思います。NetRelease版でないと走らないと思います。

(1)ダウンロードツールのダウンロード
ネットから直接ダウンロードできるようになっていました。
http://sourceware.cygnus.com/cygwin/mirrors.html
ここからたどってsetup.exeをダウンロードしました。

(2)ダウンロード
このsetup.exeをつかって簡単にダウンロードできるようになっていました。便利。私はひとまずファイル類をローカルにダウンロードしました。

(3)インストール
再びこのsetup.exeを使用してパソコンにインストールしました。c:\cygwinというディレクトリができました。

(4)ひとまず走らせる
スタートアップから実行させてみました。おお、ディレクトリ関係がまともです。進化してるっ。終わるときはlogoutです。

(5)各種設定してみる。
まずcygwin.batの環境を整えます。上記のリンクの中からセットアップ方法を参考にできます。私は以下のようにしました。

・cygwin.batの設定
インストールしたディレクトリにcygwin.batができていますのでこれを設定します。私の場合はこのように設定しました。

@echo off
C:
chdir \cygwin\bin
SET HOME=c:\cygwin\home\ホームを作るディレクトリ
SET MAKE_MODE=UNIX
SET PATH=c:\usr\local\bin;c:\usr\bin;c:\bin
SET CYGWIN="notty binmode ntea nontsec"
bash --login -i

ホームディレクトリは試しに一度走らせたならばすでにできていると思いますのでそれにあわせます。日本語だったら通らないと思いますので新しく作ります。
その後バッチの環境を右クリック->プロパティーで設定。この設定はメモリのタブの環境変数を最大にします。その他は自動でいいと思います。更新されたこのショートカットから起動してください。
NTならこのバッチの環境の設定はいりません。

・login時の初期設定ファイル
/etc/profileを~/.bash_profileとしてコピーしました。

cp /etc/profile ~/.bash_profile

nameのところは多分コンピュータ名が入っていると思います。

・~/.bash_profileを編集
秀丸エディタとかで編集できます。設定に関しては上記のcygwin関連のリンクを見ていただきたいのですが、私の設定を一応ここにおいておきます
EUC、LFでsaveしないといけません。以降パスを通すときにもこのファイルを使います。

(6)バグ対策
ここからですが、現在のcygwin1.1.7は /bin/sh.exe が不完全でシェルスクリプトがうまく通らないことがあるので(多分原因は/ash/eval.cの700行あたり)、これを上位互換B-shellの /bin/bash.exe に置き換えます。sh.exeを削除し、bash.exeを残したままコピーし、コピーしたものをsh.exeにリネームします。win上からなら簡単です。

余談ですが、windows系からファイルの更新するときは改行コードはLFしてsaveする必要があります。秀丸エディタなど最近の高機能なエディタにはこの機能があることでしょう。

   AVR-GCCのセットアップ

ホームディレクトリにAVRというディレクトリを作ります。されにその中にsrcというディレクトリを作りここでコンパイルすることにしました。

cd
mkdir avr
cd avr
mkdir src
cd src

新しく作った~/avr/以降に構築することとします。

●binutilsのインストール

CVSアクセスは面倒ですのでスナップショットのbinutils-010113.tar.bz2を使いました。これらはここからたどれます。まあこれより新しい日付だったらいいと思います。ダウンロードしたら、~/avr/srcにおいて(もちろんwin上からできます)、

bunzip2 binutils-010113.tar.bz2
tar xvf binutils-010113.tar.bz2

などとし展開。できたbinutils-010113というディレクトリに移動して

./configure --target=avr --prefix=構築したい場所
make
make install

で/avr以下にbinディレクトリができ、アセンブラなどができるはずです。構築する場所は /home/ユーザー名/avr としました。最近は絶対パスを入れないといけないようです。

●gccのインストール

gccをコンパイルするときにavr-asを使うので~/avr/binにパスを通します。.bash_prifileの中で追加しています。前述のファイルを見てください。さらに一度Cygwinを終わって再起動するとパスがとおっています。envとか打って確かめてみてください。

こちらもスナップショットを使いました。スナップショットのgcc-core-20010108.tar.gzを使いました。ここからたどったところにあります。~/avr/srcにおいて

tar xvzf gcc-core-20010108.tar.gz

で展開。できたgcc-core-20010108.tar.gzディレクトリに移動して

./configure --target=avr --prefix=構築したい場所 --enable-languages=c

そしてmakeを開始します。もしそのまま通ればそれでいいのですが、cygwin1.1.7では、一部、ローダで名前解決ができないシンボルがあるので次の場所のconfigureでできているMakefileに追加して、これを含むライブラリを追加してやります。そのまま通ればそれでいいと思います。

/gcc/Makefileの655行目付近

# prefix.c wants to poke around the Registry
CLIB = -ladvapi32

とありますがここに次のライブラリを追加してsaveします。

# prefix.c wants to poke around the Registry
CLIB = -ladvapi32 /lib/libintl.dll.a

その後

make

します。コンパイルできたらインストールしますが現在のスナップショットはgcc3.0に向けてjava関連をマージしている途中のようで、この関連をインストールするときにエラーが出ますので、gcc関連だけインストールします。

make installdirs
make install-gcc

これで終了です。avr-gcc -v としてバージョン情報がでたら成功です。

●avr-libcのインストール

次にここからavr-libc-20001125.tar.gzをダウンロードして展開します。

tar xvzf avr-libc-20001125.tar.gz

その中のsrcディレクトリに入って

make prefix=構築したい場所
make prefix=構築したい場所 install

これで完了です。

   まとめ

cygwinは常に更新され続けていますので、そのまま通るかも知れません。しかしある程度安定したら新しい機能を追加して不安定になる時期があるようなので、うまくこれらが通ったバージョンがあれば保存しておくのがいいと思います。しかし、最近は速くそして安定もしてきているようです(特にNT上)。でもPen3-1Gはほしいところ。

いずれにせよすべてフリーでこれだけの環境が手に入るとは素敵な話しですね。


戻る