ルート権限の無いCentOSにGCCを野良ビルドする


はじめに

root権限の無いCentOS7.3&GCC-4.8.5の環境で色々試行するため,とりあえず新しいGCC-9.3.0を自分のhomeディレクトリ内に野良ビルドしたいと思います。

準備

GCC、GMP、MPFR、MPCを以下からそれぞれダウンロードしておきます。
- https://gcc.gnu.org/
- https://gmplib.org/
- https://www.mpfr.org/
- http://www.multiprecision.org/

今回用いたバージョンは,gcc-9.3.0,gmp-6.1.2,mpfr-4.1.0,mpc-1.1.0です。現時点でgmp-6.2.0が最新版の様ですが,エラーが生じて面倒なので,たため1つ前のバージョンを用いました。古いGCCだとgmp-6.2.0でエラーが生じるようです。

ビルドとインストール

共有で使用している環境なので,できるだけ自身のhome内で完結できる様にするため,とりあえずtoolsというディレクトリを作り,その中にインストールしていきたいと思います。

最初に,ダウンロードしたgccを解凍し,gcc_workという作業用ディレクトリに名前を変更します。
次に,gcc_work内にgmp,mpfr,mpcというディレクトリ名で,それぞれ解凍したものを保存しておきます。
gcc_work内にbuildディレクトリを作成&移動し,configure,make,make installを行います。

tar Jxfv gcc-9.3.0.tar.xz
mv gcc-9.3.0 gcc_work

tar xfv gmp-6.1.2.tar.bz2
mv gmp-6.1.2 ~/tools/gcc_work/gmp

tar Jxfv mpfr-4.1.0.tar.xz
mv mpfr-4.1.0 ~/tools/gcc_work/mpfr

tar xzf mpc-1.1.0.tar.gz
mv mpc-1.1.0 ~/tools/gcc_work/mpc

cd gcc_work
mkdir build
cd build

../configure --prefix=$HOME/tools/gcc-9.3.0 --enable-languages=c,c++,fortran --disable-multilib
make -j 12
make install

今回は,C,C++,Fortranを使用するので,configureのオプションは上記のようにしました。元のGCCと使い分けのため,インストール完了後に$HOME/binを作成し,後ろに93を付けてシンボリックリンクを作成します。

cd ~/bin/
ln -s ~/tools/gcc-9.3.0/bin/gcc gcc93
ln -s ~/tools/gcc-9.3.0/bin/g++ g++93
ln -s ~/tools/gcc-9.3.0/bin/gfortran gfortran93

また,以下を.bash_profileへ追記しました。

export PATH=$PATH:$HOME/.local/bin:$HOME/bin
export LD_LIBRARY_PATH=$HOME/tools/gcc-9.3.0/lib64:$LD_LIBRARY_PATH

以上で,取りあえずGCC-9.3.0が動くようになりました。