Linux Mint 17.1 "Rebecca" - Cinnamon (64-bit)でgcc 5.1.0をビルドしてインストール


Linux Mint 17.1 "Rebecca" - Cinnamon (64-bit)で、gcc 5.1.0を、ソースコードからビルドしてインストールする際、ハマったのでメモしておきます。たぶんUbuntuでも、同様の手順でインストールできるのではないかと思います。

当然ですが、コンソールでの作業になります。

基本的に、 How to Manually Build and Install GNU Compiler Collection on Linux Mint の通りに、インストールを進めます。

まず、ビルドに必要なライブラリをインストールします。

gmp-6.0.0のインストール

まず、GMP(任意精度算術ライブラリ)をインストールします。gmp-6.0.0a.tar.bz2 をダウンロードして、適当なディレクトリに解凍し、そのディレクトリに移動します。

$ wget https://ftp.gnu.org/gnu/gmp/gmp-6.0.0a.tar.bz2
$ tar -jxvf gmp-6.0.0a.tar.bz2
$ cd gmp-6.0.0

そして、次のコマンドを実行します。

$ sudo mkdir /opt/gmp-6.0.0
$ ./configure --prefix=/opt/gmp-6.0.0 && make && make check && sudo make install

正しくビルド&インストールされていたならば、以下のように表示されるはずです。

MPFR-3.1.2のインストール

次に、MPFR(高精度浮動小数点算術ライブラリ)をインストールします。mpfr-3.1.2.tar.bz2 をダウンロードして、適当なディレクトリに解凍し、そのディレクトリに移動します。

$ wget http://www.mpfr.org/mpfr-current/mpfr-3.1.2.tar.bz2
$ tar -jxvf mpfr-3.1.2.tar.bz2
$ cd mpfr-3.1.2

そして、次のコマンドを実行します。

$ sudo mkdir /opt/mpfr-3.1.2
$ ./configure --prefix=/opt/mpfr-3.1.2 --with-gmp=/opt/gmp-6.0.0 && make && make check && sudo make install

正しくビルド&インストールされていたならば、以下のように表示されるはずです。

MPC-1.0.3のインストール

次に、MPC(複素数算術ライブラリ)をインストールします。mpc-1.0.3.tar.gz をダウンロードして、適当なディレクトリに解凍し、そのディレクトリに移動します。

$ wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
$ tar -xvzf mpc-1.0.3.tar.gz
$ cd mpc-1.0.3

以下のコマンドを実行します。

$ sudo mkdir /opt/mpc-1.0.3
$ ./configure --prefix=/opt/mpc-1.0.3 --with-gmp=/opt/gmp-6.0.0 --with-mpfr=/opt/mpfr-3.1.2 && make && make check && sudo make install

正しくビルド&インストールされていたならば、以下のように表示されるはずです。

gcc-5.1.0のビルドとインストール

最後に、gcc-5.1.0をビルドしてインストールします。gcc-5.1.0.tar.bz2 をダウンロードして、適当なディレクトリに解凍し、そのディレクトリに移動します。

$ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.1.0/gcc-5.1.0.tar.bz2
$ tar -jxvf gcc-5.1.0.tar.bz2
$ cd gcc-5.1.0

以下のコマンドを実行します。

$ sudo mkdir /opt/gcc-5.1.0
$ ./configure --prefix=/opt/gcc-5.1.0 --with-gmp=/opt/gmp-6.0.0 --with-mpfr=/opt/mpfr-3.1.2 --with-mpc=/opt/mpc-1.0.3 --disable-multilib --enable-languages=c,c++
$ make -j(thread num) && sudo make install

ここで、(thread num)には、並列ビルドに使用するスレッド数を指定します。
以上を実行すると、私の環境では、以下のようなエラーが表示されます。

いろいろ調べたところ、これは、CPLUS_INCLUDE_PATH(あるいは、C_INCLUDE_PATH)関連のエラーらしいです(参考:g++ 4.7.1 compilation error : conflicting types for ‘strsignal’ - Stack Overflow

下図のように、私の環境では、.bashrcCPLUS_INCLUDE_PATHをコメントアウトすると、問題なくビルドできました(なお、source ~/.bashrcではダメで、再起動が必要のようです)。

正しくビルド&インストールされていたならば、以下のように表示されるはずです。

/etc/profileと/etc/ld.so.confの編集

次に、/etc/profileに対して、次のコマンドを実行します。

sudo sh -c "echo 'export PATH=/opt/gcc-5.1.0/bin:\$PATH' >> /etc/profile"
sudo sh -c "echo 'export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu' >> /etc/profile"

次に、/etc/ld.so.confに対して、次のコマンドを実行します。

sudo sh -c "echo '/opt/gmp-6.0.0/lib' >> /etc/ld.so.conf"
sudo sh -c "echo '/opt/mpfr-3.1.2/lib' >> /etc/ld.so.conf"
sudo sh -c "echo '/opt/mpc-1.0.3/lib' >> /etc/ld.so.conf"

以下のコマンドを実行して、/etc/profileと/etc/ld.so.confの変更を反映させます。

sudo ldconfig -v
. /etc/profile

インストールの確認

$ printenv PATHを実行し、以下のように、PATH環境変数に、/opt/gcc-5.1.0/binが含まれていることを確認します。

$ gcc --versionと、$ g++ --versionを実行し、以下のように、5.1.0と表示されることを確認します。

補足

なお、私の環境では、Boostのビルドで /usr/lib/libstdc++.so.6: version 'GLIBCXX_3.4.21' not found と言われましたので、GLIBCXX_3.4.20 not found, how to fix this error? - Stack Overflow の通りに、

$ sudo apt-get install libstdc++6
$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
$ sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

としたら、解決しました。

以上で、gcc-5.1.0のビルドとインストールは完了です。お疲れ様でした。