'''このページの内容は古いです。''' [wiki:AVR-GCC-2012 内容を更新したページ]を参照してください。 = AVR用GCCを自分でビルドしてみる = AVRをいじっている皆さんの「出身」はどの方面でしょうか? ウィンドウズ方面?マック方面?僕はUnix/Linux方面です。 たぶん、Unix/Linux方面から来たせいだと思いますが、GUIで開発するのは得意じゃなくて、どうしてもコマンドラインで仕事したくなります。 そんなわけで、AVR用のGCCを自分でビルドしてみます。 ちょっと古いバージョンなら、普段使っているUbuntuにパッケージがあるのでインストールしておしまいなのですが、やっぱり最新版が欲しくなります。 なぜなら、AT90USB162とか、新しめのチップをいじりたいからです。 == 概要 == 目新しいことはありません。 [http://www.nongnu.org/avr-libc/ AVR Libcのサイト]にある、[http://www.nongnu.org/avr-libc/user-manual/install_tools.html GCC等のビルド方法の解説ページ]に従ってビルドします。 最終的に、`/usr/local/avr`以下にすべてのファイルをインストールすることにします。 == 準備 == ディレクトリを作成します。 スーパーユーザでmake installを行うと悲しいことが起きる可能性があるので、あらかじめchownで自分の物にしておきます。 {{{ % sudo mkdir /usr/local/avr % sudo chown 自分 /usr/local/avr % cd /usr/local/avr % mkdir src }}} == binutils == * [http://sources.redhat.com/binutils/ このあたりからbinutils-2.18をもらってきます。] * [http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/avr-binutils/files/patch-newdevices このあたりからパッチファイルをもらってきます。] パッチを当てないと、アセンブラが最近のチップで導入された命令を知らないため、GCCのビルドでエラーになります。 {{{ % tar xvzf binutils-2.18.tar.gz % cd binutils-2.18 % patch -p0 < パッチファイル % mkdir build % cd build % ../configure --prefix=/usr/local/avr --target=avr --disable-nls }}} ここでちょっと修正が必要でした。 `config.status`を開き、「`/usr/local/avr/src/`…`/missing makeinfo`」となっている部分を「`makeinfo`」に変更します。 makeinfoをちゃんと入れてあるのに、なぜか認識されていませんでした。環境によって異なると思います。 {{{ % vi config.status % ./config.status }}} あとは通常通り。 {{{ % make % make install }}} パスを通しておきましょう。 {{{ % export PATH=/usr/local/avr/bin:$PATH }}} == GMPとMPFR == 最近のGCCは、GMPとかMPFRとかいうソフトを使用します。 数学系のライブラリです。 もちろん、AVR用のバイナリに組み込まれるのではなくて、コンパイラ自身の実装のために使用しています。 これらがインストールされていない場合、GCCのビルドでエラーになります。 適切なバージョンがOSにインストール済みなら不要です。 ここでは、`/usr/local/avr`の下ではなく、`/usr/local`の下に直接インストールしてしまいます。 * [http://gmplib.org/ このあたりからGMPをもらってきます。] * [http://www.mpfr.org/ このあたりからMPFRをもらってきます。] {{{ % tar xvjf gmp-4.2.4.tar.bz2 % cd gmp-4.2.4 % mkdir build % cd build % ../configure % make % sudo make install }}} {{{ % tar xvjf mpfr-2.3.2.tar.bz2 % cd mpfr-2.3.2 % mkdir build % cd build % ../configure % make % sudo make install }}} インストールしたライブラリを検索対象に加えておく必要があります。 {{{ % sudo ldconfig }}} == GCC == * [http://gcc.gnu.org/ このあたりからGCCをもらってきます。] {{{ % tar xvjf gcc-4.3.2.tar.bz2 % cd gcc-4.3.2 % mkdir build % cd build % ../configure --prefix=/usr/local/avr --target=avr --enable-languages=c,c++ --disable-nls --disable-libssp --with-dwarf2 }}} 適切なバージョンのGMPおよびMPFRが入っていないと、ここでエラーになります。 上に戻って、インストールします。 {{{ % make % make install }}} エラーになった場合は、上記のパスを通すのを忘れていないか、`ldconfig`を忘れていないか確認します。 == AVR Libc == * [http://download.savannah.gnu.org/releases/avr-libc/ このあたりからAVR Libcをもらってきます。] {{{ % tar xvjf avr-libc-1.6.2.tar.bz2 % cd avr-libc-1.6.2 % mkdir build % cd build % ../configure --prefix=/usr/local/avr --build=`../config.guess` --host=avr % make % make install }}} == 後片付け == 必要に応じて、もらってきたアーカイブファイル、展開したソースなどを削除します。 最後に、必要に応じて、`/usr/local/avr`ディレクトリ以下をrootの持ち物に変更します。 {{{ % sudo chown -R root.root /usr/local/avr }}} ''(2008/10/3 - sgk)''