手元のgccが古かったので、新しいものをソースからビルドしました。
基本的に このページの内容をなぞっただけ。
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-7.2.0/gcc-7.2.0.tar.xz
tar xf gcc-7.2.0.tar.xz
cd gcc-7.2.0/
./contrib/download_prerequisites
cd ..
mkdir obj
cd obj
../gcc-7.2.0/configure --enable-languages=c,c++ --prefix=/usr/local --disable-multilib
make -j4 |& tee make.log
sudo make install
$ which gcc
/usr/local/bin/gcc
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/7.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-7.2.0/configure --enable-languages=c,c++ --prefix=/usr/local --disable-multilib
Thread model: posix
gcc version 7.2.0 (GCC)
gccをビルドするには、いろいろ付随するライブラリも必要なのですが、contrib/download_prerequisites を実行すると自動で必要なものをダウンロードしてくれるのが便利でした。
configure のときに--disable-bootstrap をつけなかったので、3回ビルドしてテストしています。これだと時間はかかるものの、最終的にインストールされるものは、自分自身(=最新のgcc)でビルドしたものになるというメリットがある。
ノートPC上の仮想マシンの中でgccのビルドをうっかり始めてしまったら、全然終わらない。ファンが全開に回っているのは仕方ないとして、ビルドの進み方が遅いのは熱のためにクロックを大幅に下げているっぽい。ぐぬぬ。
— 組み込みの人。 (@tetsu_koba) 2018年1月19日
結局1時間くらいかかりました。