LinuxでAVR開発をしたり、Cygwin 1.7以降でavr-gccを使う場合にはLinuxでもAVR(1)にあるようにパッチを当ててからビルドしなければなりません。しかし、WinAVRのCSVリポジトリにあるパッチは少々古く最新のWinAVR用のパッチがおいてありません。 by Y.O
WinAVRのリポジトリのパッチは対応するバージョンのbinutilsやgccをダウンロードしてきてもHunkがでてきれいにパッチがあたりません。では、本物のパッチはどこにあるのだろうと探し回っていたらようやく見つけました。なぜかわかりませんが、FreeBSDのリポジトリにパッチがあります。binutilsパッチとgccパッチがあります。avr-libcパッチは本稿作成時点ではないようですね。こちらのパッチは対応するバージョンのbinutilsとgccをダウンロードしてくればきれいにパッチが当たります。ついでにgcc3系統のパッチもあるようですので、小さなバイナリを生成したい人はgcc3でビルドするといいと思います。gcc3では対応していないデバイスもありますが、すzさんの記事を見るとデバイスを追加する方法が解説されています。
しかし、GPLライセンスなのにソースを探すのに苦労する状況はいいのですかね。GPLは元のコードに対するパッチで配布するのも認めておらず、完全なソースを提供する義務があったはずなのですが。個人的にはソース丸ごとよりパッチで配布のほうが新しいバージョンに対応させやすいので歓迎ですけどね。
なお、そのままではCygwinでbinutilsビルドが通らなかったのでバッチを載せておきます。
[plain]
— original/binutils-2.20/gas/as.c 2009-09-14 20:43:26.000000000 +0900
+++ binutils-2.20/gas/as.c 2010-04-20 13:42:03.235105700 +0900
@@ -50,7 +50,7 @@
#ifdef HAVE_SBRK
#ifdef NEED_DECLARATION_SBRK
-extern void *sbrk ();
+extern void *sbrk (int);
#endif
#endif
[/plain]
追記 :
上のパッチは正しくconfigureが通った環境では必要ないのですね。ノートン先生がいるとconfigureが正しく行われないので、それで必要になってしまったようです。
[…] というわけでUbuntuもしくはDebianを使っている人は単純にsudo apt-get install avr-libc avrdudeとでもすれば、とりあえずのAVR開発環境がそろいます。FedoraやGentooではそうなってはいなそうなので、LinuxでAVRやAVR-GCCの自前ビルドを参照して自力でコンパイルしなければならないようです。 […]