gcc4.6.1をインストール

c++11を利用したくなったのでgccの最新版を入れることにした。
インストール済みだったのは4.4.3(ubuntu10.04プリインストール)、
今回入れたのは4.6.1。

c++11の新機能は以下で知った
http://topcoder.g.hatena.ne.jp/cafelier/20110816/1313498443

基本、http://gcc.gnu.org/install/を見れば分かる。
以下メモ。(基本このとおりで出来るかと。。)

cd $HOME

mkdir gccinstall

cd gccinstall

wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.6.1/gcc-core-4.6.1.tar.gz

wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.6.1/gcc-g++-4.6.1.tar.gz

tar xf gcc-core-4.6.1.tar.gz  

tar xf gcc-g++-4.6.1.tar.gz
 

mkdir build

mkdir obj

cd obj

../gcc-4.6.1/configure --prefix $HOME/gccinstall/build

依存ソフトウェアが足りない場合は、ここでエラーが出る

configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.
Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
their locations. Source code for these libraries can be found at
their respective hosting sites as well as at
ftp://gcc.gnu.org/pub/gcc/infrastructure/. See also
http://gcc.gnu.org/install/prerequisites.html for additional info. If
you obtained GMP, MPFR and/or MPC from a vendor distribution package,
make sure that you have installed both the libraries and the header
files. They may be located in separate packages.

#GMP, MPFR, MPCは所定のディレクトリに解凍しておいておけばgccMakefileがよしなにしてくれるみたいです。すげえ

GMP

wget ftp://ftp.gmplib.org/pub/gmp-5.0.2/gmp-5.0.2.tar.gz
tar xf gmp-5.0.2.tar.gz
mv gmp-5.0.2 gcc-4.6.1/gmp


MPFR

wget http://www.mpfr.org/mpfr-current/mpfr-3.0.1.tar.gz
tar xf mpfr-3.0.1.tar.gz
mv mpfr-3.0.1 gcc-4.6.1/mpfr

MPC

wget http://www.multiprecision.org/mpc/download/mpc-0.9.tar.gz
tar xf mpc-0.9.tar.gz
mv mpc-0.9 gcc-4.6.1/mpc

cd obj
../gcc-4.6.1/configure --prefix=$HOME/gccinstall/build/

Makefileができたら成功
(PPLはgraphite loop optimizationが要らなければ不要 とりあえず遊びたいならいらない気がします ループ最適化がどうとか)

make

make install

パスを通します。.bashrcに追記。

libstdc++(shared library)を新しくします。

cd /usr/lib64
sudo mv libstdc++.so.6 libstdc++.so.6_bak
sudo ln -s $HOME/gccinstall/build/lib64/libstdc++.so.6 .

以上で終了です。お疲れ様でした。

(追記:
make中にこんなエラー

コンパイルが中断されました。
make[5]: *** [_muldi3.o] エラー 1
make[5]: ディレクトリ `/home/kfujima/gccinstall/obj/x86_64-unknown-linux-gnu/32/libgcc' から出ます
make[4]: *** [multi-do] エラー 1
make[4]: ディレクトリ `/home/kfujima/gccinstall/obj/x86_64-unknown-linux-gnu/libgcc' から出ます
make[3]: *** [all-multi] エラー 2
make[3]: ディレクトリ `/home/kfujima/gccinstall/obj/x86_64-unknown-linux-gnu/libgcc' から出ます
make[2]: *** [all-stage1-target-libgcc] エラー 2
make[2]: ディレクトリ `/home/kfujima/gccinstall/obj' から出ます
make[1]: *** [stage1-bubble] エラー 2
make[1]: ディレクトリ `/home/kfujima/gccinstall/obj' から出ます
make: *** [all] エラー 2

よく分からないけど以下で解決

sudo aptitude install libc6-dev-i386

参考URL: http://ubuntuforums.org/showthread.php?t=1281485

make[5]: *** [alloc.lo] エラー 1
make[5]: ディレクトリ `/home/kfujima/gccinstall/obj/x86_64-unknown-linux-gnu/libgomp' から出ます
make[4]: *** [all-recursive] エラー 1
make[4]: ディレクトリ `/home/kfujima/gccinstall/obj/x86_64-unknown-linux-gnu/libgomp' から出ます
make[3]: *** [all] エラー 2
make[3]: ディレクトリ `/home/kfujima/gccinstall/obj/x86_64-unknown-linux-gnu/libgomp' から出ます
make[2]: *** [all-stage1-target-libgomp] エラー 2
make[2]: ディレクトリ `/home/kfujima/gccinstall/obj' から出ます
make[1]: *** [stage1-bubble] エラー 2
make[1]: ディレクトリ `/home/kfujima/gccinstall/obj' から出ます
make: *** [all] エラー 2

libgompはOpenMPに関係するなにからしい。しったこっちゃないので./configureに --disable-libgompを追加。

make[3]: *** [fibheap.o] エラー 1
make[3]: ディレクトリ `/home/kfujima/gccinstall/obj/libiberty' から出ます
make[2]: *** [all-stage2-libiberty] エラー 2
make[2]: ディレクトリ `/home/kfujima/gccinstall/obj' から出ます
make[1]: *** [stage2-bubble] エラー 2
make[1]: ディレクトリ `/home/kfujima/gccinstall/obj' から出ます
make: *** [all] エラー 2

解決できません誰か助けてTT
->すべての作業を最初からやり直したらなぜか上手く行きました。

)