より良い方法があったのでこちらをご覧ください。
どうやらavr-libcのバージョンが異なるのが原因のようです。
- avr-libcのHomePageの最新バージョンはv2.0.0
- Raspberry Piにインストールされているavr-libcバージョンはv1.8
(1)最新化に必要なソフト
せっかくなのでgccも最新化します。
・binutils-2.29.1.tar.xz
https://www.gnu.org/software/binutils/
・gcc-7.2.0.tar.xz
https://gcc.gnu.org/
・gmp-6.1.2.tar.xz
https://gmplib.org/
・mpfr-3.1.6.tar.xz
http://www.mpfr.org/
・mpc-1.0.3.tar.gz
http://www.multiprecision.org/index.php?prog=mpc
・avr-libc-2.0.0.tar.bz2
http://www.nongnu.org/avr-libc/
・avr-size用パッチ
https://gist.github.com/larsimmisch/4190960
(2)コンパイル手順
avr-libcのHomePageにコンパイル手順の説明があります。基本的にこの手順で実施すればOKです。
(2-1)環境設定
$ mkdir ~/local $ PREFIX=$HOME/local $ export PREFIX $ PATH=$PATH:$PREFIX/bin $ export PATH
(2-2)GNU Binutilsのコンパイル
$ cd ~/src/avr $ wget https://ftp.gnu.org/gnu/binutils/binutils-2.29.1.tar.xz $ tar xvf binutils-2.29.1.tar.xz $ wget https://gist.github.com/larsimmisch/4190960/archive/16c6b9627f8451eeebd644a4b9a741edfdb0c45e.zip $ unzip 16c6b9627f8451eeebd644a4b9a741edfdb0c45e.zip $ cd binutils-2.29.1/binutils $ patch -u < ../../4190960-16c6b9627f8451eeebd644a4b9a741edfdb0c45e/avr-binutils-size.patch $ cd .. $ mkdir obj-avr $ cd obj-avr/ $ ../configure --prefix=$PREFIX --target=avr --disable-nls $ make -j4 $ make install
(2-3) GNU gmpのコンパイル
gccをコンパイルするためにはgmp, mpfr, mpcが必要なため、先にコンパイルします。
$ cd ~/src/avr $ wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz $ tar xvf gmp-6.1.2.tar.xz $ cd gmp-6.1.2/ $ ./configure --prefix=$PREFIX $ make -j4 $ make -j4 check $ make install
(2-4) GNU mpfrのコンパイル
$ cd ~/src/avr $ wget http://www.mpfr.org/mpfr-current/mpfr-3.1.6.tar.xz $ tar xvf mpfr-3.1.6.tar.xz $ cd mpfr-3.1.6 $ ./configure --prefix=$PREFIX --with-gmp-build=../gmp-6.1.2 $ make -j4 $ make -j4 check $ make install
(2-5) GNU mpcのコンパイル
$ cd ~/src/avr $ wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz $ tar xvf mpc-1.0.3.tar.gz $ cd mpc-1.0.3 $ ./configure --prefix=$PREFIX --with-gmp=$PREFIX --with-mpfr=$PREFIX $ make -j4 $ make -j4 check $ make install
(2-6) gccのコンパイル
$ cd ~/src/avr $ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-7.2.0/gcc-7.2.0.tar.xz $ tar xvf gcc-7.2.0.tar.xz $ cd gcc-7.2.0/ $ mkdir obj-avr $ cd obj-avr $ ../configure --prefix=$PREFIX --target=avr --enable-languages=c,c++ --disable-nls --disable-libssp --with-dwarf2 --with-gmp=$PREFIX --with-mpfr=$PREFIX --with-mpc=$PREFIX $ make -j4 $ make install
(2-7)avr-libcのコンパイル
$ cd ~/src/avr $ wget http://download.savannah.gnu.org/releases/avr-libc/avr-libc-2.0.0.tar.bz2 $ tar xvf avr-libc-2.0.0.tar.bz2 $ cd avr-libc-2.0.0/ $ ./configure --prefix=$PREFIX --build=`./config.guess` --host=avr $ make -j4 $ make install