none rootなcloudlinuxにgcc4.8.3導入

試行錯誤に約4日。コンパイルに半日以上。

とりあえずインストール完了したのでメモ。

 

GNUで新しいパッケージを既に$HOME/local/以下で利用していたため、

  • aclocalは、$HOME/local/binを利用している事を確認。
  • PKG_CONFIG_PATHとld.so.confで、いずれも$HOME/local/配下にあるものを、/usr/lib62, /lib64より先に読み込んでいるか確認。

で。

mkdir $HOME/local/gcc

 

cd $HOME/local/work

wget -O - ftp://ftp.gnu.org/gnu/gmp/gmp-5.1.3.tar.bz2 | bzip2 -dc | tar xf -

cd gmp-5.1.3

M4=$HOME/local/bin/m4 ./configure --prefix=$HOME/local/gcc --enable-cxx

make -j2

make -j2 check

make install

 

cd $HOME/local/work

wget -O - http://www.mpfr.org/mpfr-3.1.2/mpfr-3.1.2.tar.bz2 | bzip2 -dc | tar xf -

cd ../mpfr-3.1.2

./configure --prefix=/$HOME/local/gcc --with-gmp=$HOME/local/gcc

make -j2

make -j2 check

make install

 

cd $HOME/local/work

wget -O - http://www.multiprecision.org/mpc/download/mpc-1.0.2.tar.gz | gzip -dc | tar xf -

cd ../mpc-1.0.2

/configure --prefix=$HOME/local/gcc --with-gmp=$HOME/local/gcc --with-mpfr=$HOME/local/gcc

make -j2

make -j2 check

make install

 

cd $HOME/local/work

wget -O - http://ftp.gnu.org/gnu/gcc/gcc-4.8.3/gcc-4.8.3.tar.bz2 | bzip2 -dc | tar xf -

mkdir gcc-build

cd gcc-build

../gcc-4.8.3/configure --enable-languages=c,c++,fortran --prefix=$HOME/local/gcc --with-gmp=$HOME/local/gcc --with-mpfr=$HOME/local/gcc --with-mpc=$HOME/local/gcc --with-stage1-ldflags="-
Wl,-rpath,$HOME/local/gcc/lib" --with-boot-ldflags="-Wl,-rpath,$HOME/local/gcc/lib" --with-multilib-list=m64 --program-suffix=46

make -j2

ここで、

msgfmt -o de.mo ../../../../gcc-4.8.3/libstdc++-v3/po/de.po

が、セグメント違反なエラーでコンパイル停止。

$HOME/local/bin/msgfmtでは無く、/usr/bin/msgfmtを使うように変更し、再び、make -j2

make install

 

ld.so.confの先頭に、$HOME/local/gcc/lib64を追加し、ldconfig実行

$HOME/.bash_profileのPATHの先頭に、$HOME/local/gcc/binを追加し、source $HOME/.bash_profileを実行

 

さらに、シンボリックリンクを張る。

ln -b -s $HOME/local/gcc/bin/gcc46 $HOME/local/bin/gcc
ln -b -s $HOME/local/gcc/bin/gcc-ar46 $HOME/local/bin/gcc-ar
ln -b -s $HOME/local/gcc/bin/gcc-nm46 $HOME/local/bin/gcc-nm
ln -b -s $HOME/local/gcc/bin/gcc-ranlib46 $HOME/local/bin/gcc-ranlib
ln -b -s $HOME/local/gcc/bin/gcov46 $HOME/local/bin/gcov
ln -b -s $HOME/local/gcc/bin/gfortran46 $HOME/local/bin/gfortran
ln -b -s $HOME/local/gcc/bin/c++46 $HOME/local/bin/c++
ln -b -s $HOME/local/gcc/bin/cpp46 $HOME/local/bin/cpp
ln -b -s $HOME/local/gcc/bin/g++46 $HOME/local/bin/g++