LinuxでもAVR(1)

LinuxでもAVRの開発を行いたいという強者(物好き)のための情報です。 Windowsのように便利なものはありません。(ありますが一部バグがあるらしい) なので、自力でパッチをあててコンパイルをします。「GUI(グラフィックがウザイ インターフェース)だとマウスが面倒くさい」という人にはぴったりです。 Fedora 10 で動作確認をしましたが、基本的にどのディストリビューションでも使えます。

楽な方法(非推奨)
パッケージ管理システム(Fedoraならyum, Ubuntuならapt)を使う。
以下のパッケージをインストールしましょう。

  • gcc-avr     AVR用gcc
  • binutils-avr    コンパイラの裏で働いているユーティリティ
  • avr-libc      AVR用Cライブラリ

ただし、上記のバグの問題があるためおすすめできません。
手作業でコンパイル(推奨)
WinAVRからavr-libc, binutils, gccのパッチを全てダウンロードして解凍しましょう。上記のバグ用のパッチです。このときに、それぞれどのバージョンのパッチをダウンロードしたかを覚えておきます。
次にGNU Binutils, GCC, AVRLibc から、さっきダウンロードしたパッチと同じバージョンのソースをダウンロードします。
WinAVRからダウンロードしたパッチを適用します。注意点として、パッチの頭についている数字には意味があるので適用する順番を間違えると、コンパイルに失敗します。特に数時間にも及ぶgccのコンパイル中にエラーが出ると泣きたくなります。いちいちパッチを当てるのが面倒くさい人(大半の人)はソースのあるディレクトリで、find <パッチのあるディレクトリ> -type f -name “*.patch” | sort | xargs -i  patch -p0 -i {} と実行しましょう。念のためにrejectがないか確かめましょう。これを3つのソースで行います。
さあ、後はコンパイルするだけです。gccとbinutilsのコンパイルはソースディレクトリの中では出来ないので作業用ディレクトリを作成します。gccのコンパイルにはとても時間がかかります。ちょっとコーヒーを入れているいる間に終わっているような時間ではないので、寝る前にコンパイルを開始して起きたときに確認するのをおすすめします。
binutils

$ cd binutils-<version>

$ mkdir avr-obj

$ cd avr-obj

$ ../configure --prefix=$PREFIX --target=avr --disable-nls

$ make

$ make install

gcc

$ cd gcc-<version>

$ mkdir obj-avr

$ cd obj-avr

$ ../configure --prefix=$PREFIX --target=avr
--enable-languages=c --disable-nls
--disable-libssp --with-dwarf2

$ make

$ make install

avrlibc

$ cd avr-libc-<version>

$ ./configure --prefix=$PREFIX --build=`./config.guess` --host=avr

$ make

$ make install

–prefixを省くと/usr/local/bin/にインストールされるでしょう。その場合はroot権限が必要なのでsuかsudoを使って管理者権限でmake installをしましょう。$PREFIXに設定したディレクトリにパスが通っていない場合はパスを通しておきましょう。
次回に続く

by Shiozaki

参考: avrlibc:Building and Installing the GNU Tool Chain

2010/03/02
gccのコンパイル時間短縮のための指摘があったため、gccのconfigureのオプションを–enable-language=cに変更。マイコンでもC++を使いたいという強者(もはや基地外)は–enable-language=c,c++に変更しましょう。

連続するハイフンがWordpressに検閲されて別の文字になっていたため修正。

LinuxでもAVR(1)」への6件のコメント

  1. C++を使わないならばgccのconfigureで-enable-languages=cとだけ指定した方がコンパイル時間がかなり短縮されますよ。by Y.O

  2. […] CygwinのインストーラからDevelをインストールするのは当たり前として、そのほかにもGMPとMPFRも必要ですのでCygwinインストーラからインストールするか自力でコンパイルしておいてください。その後はLinuxでもAVRとほぼ同じです。ただしroot権限はいらないのでそのままmake installできます。 […]

  3. […] LinuxでAVR開発をしたり、Cygwin 1.7以降でavr-gccを使う場合にはLinuxでAVR開発(1)にあるようにパッチを当ててからビルドしなければなりません。しかし、WinAVRのCSVリポジトリにあるパッチは少 […]

  4. […] さて、ShiozakiさんがLinuxでAVRとしてavr-gccの詳細なコンパイルの仕方を紹介していますが、Ubuntuのパッケージ変更点を参照すると、どうやらFreeBSDのリポジトリにあるavr-gcc向けパッチを当て […]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です