昔の手順より良い方法があったので手順を変更して再掲します。
どうやらavr-libcのバージョンが異なるのが原因のようです。
- avr-libcのHomePageの最新バージョンはv2.0.0
- Raspberry Piにインストールされているavr-libcバージョンはv1.8
(1)最新化に必要なソフト
せっかくなのでgccも最新化します。
・binutils-2.31.tar.xz
https://www.gnu.org/software/binutils/
・gcc-8.2.0.tar.xz
https://gcc.gnu.org/
・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ですが、スクリプト"download_prerequisites"を実行するとgccをビルドするのに必要なライブラリ(gmp,mpfr,mpc等)を自動的にダウンロードしてくれます。さらにgccのビルド時にダウンロードしたライブラリも一緒にビルドしてくれます。
(2-1)環境設定
1 2 3 | $ mkdir $HOME /local $ export PREFIX=$HOME /local $ export PATH=$PREFIX /bin :$PATH |
(2-2)GNU Binutilsのビルド
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $ mkdir $HOME /src/avr-gcc $ cd $HOME /src/avr-gcc $ wget http: //ftp .jaist.ac.jp /pub/GNU/binutils/binutils-2 .31. tar .xz $ wget https: //gist .github.com /larsimmisch/4190960/archive/16c6b9627f8451eeebd644a4b9a741edfdb0c45e .zip $ unzip 16c6b9627f8451eeebd644a4b9a741edfdb0c45e.zip $ tar xvf binutils-2.31. tar .xz $ cd binutils-2.31 /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) gccのコンパイル
1 2 3 4 5 6 7 8 9 | $ wget http: //ftp .tsukuba.wide.ad.jp /software/gcc/releases/gcc-8 .2.0 /gcc-8 .2.0. tar .xz $ tar xvf gcc-8.2.0. tar .xz $ cd gcc-8.2.0 $ . /contrib/download_prerequisites $ mkdir obj-avr $ cd obj-avr $ .. /configure --prefix=$PREFIX --target=avr -- enable -languages=c,c++ --disable-nls --disable-libssp --with-dwarf2 $ make -j4 $ make install |
(2-4)avr-libcのコンパイル
1 2 3 4 5 6 | $ 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 |
(3)PATH設定
下記を$HOME/.profileに追加する
1 2 3 4 | # set PATH so it includes user's private bin if it exists if [ -d "$HOME/local/bin" ] ; then PATH= "$HOME/local/bin:$PATH" fi |