gcc4.6をソースからインストール

gcc4.6が必要になったので自分のホームフォルダ内でコンパイルできたら便利だなと思い、試してみました。

ダウンロード先はいろいろと探すのが面倒でしたが、こちらミラーサイトgcc-4.6.3.tar.gzをダウンロードしました。

コンパイル方法は一般的なソフトとは少し違っていますが、この通りにやってみた。オブジェクトファイルの格納位置が気に食わなかったので、少し変更しています。
InstallingGCC - GCC Wiki

tar xzvf gcc-4.6.3.tar.gz
cd gcc-4.6.3
./contrib/download_prerequisites
mkdir build
cd build
../configure --prefix=~/apps/gcc-4.6.3
make
make install

ポイントはdownload_prerequisitesとmakeの場所。download_prerequisitesでは足りないモジュール(?)を自動的にインストールしてくれるみたい。

そのときのログ。

[root@sake gcc-4.6.3]# ./contrib/download_prerequisites 
--2013-04-06 23:58:09--  ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
           => “mpfr-2.4.2.tar.bz2”
Resolving gcc.gnu.org... 209.132.180.131
Connecting to gcc.gnu.org|209.132.180.131|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD (1) /pub/gcc/infrastructure ... done.
==> SIZE mpfr-2.4.2.tar.bz2 ... 1077886
==> PASV ... done.    ==> RETR mpfr-2.4.2.tar.bz2 ... done.
Length: 1077886 (1.0M) (unauthoritative)

100%[======================================>] 1,077,886    653K/s   in 1.6s    

2013-04-06 23:58:19 (653 KB/s) - “mpfr-2.4.2.tar.bz2” saved [1077886]

--2013-04-06 23:58:20--  ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
           => “gmp-4.3.2.tar.bz2”
Resolving gcc.gnu.org... 209.132.180.131
Connecting to gcc.gnu.org|209.132.180.131|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD (1) /pub/gcc/infrastructure ... done.
==> SIZE gmp-4.3.2.tar.bz2 ... 1897483
==> PASV ... done.    ==> RETR gmp-4.3.2.tar.bz2 ... done.
Length: 1897483 (1.8M) (unauthoritative)

100%[======================================>] 1,897,483    846K/s   in 2.2s    

2013-04-06 23:58:25 (846 KB/s) - “gmp-4.3.2.tar.bz2” saved [1897483]

--2013-04-06 23:58:25--  ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
           => “mpc-0.8.1.tar.gz”
Resolving gcc.gnu.org... 209.132.180.131
Connecting to gcc.gnu.org|209.132.180.131|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD (1) /pub/gcc/infrastructure ... done.
==> SIZE mpc-0.8.1.tar.gz ... 544950
==> PASV ... done.    ==> RETR mpc-0.8.1.tar.gz ... done.
Length: 544950 (532K) (unauthoritative)

100%[======================================>] 544,950      387K/s   in 1.4s    

2013-04-06 23:58:29 (387 KB/s) - “mpc-0.8.1.tar.gz” saved [544950]

順調にmakeまで行ったと思ったら5分くらい待ってこんなエラーがでた。

/usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory

調べたら32bit版のライブラリが必要なようである。
ubuntu - Error "gnu/stubs-32.h: No such file or directory" while compiling Nachos source code - Stack Overflow
Scientific Linux 6.3なので、管理者権限で

make install glibc-devel.i686

でインストールしました。(管理者権限が無い場合は…32bit版ライブラリってコンパイルできるのかな?)

で、再度make

make
make install

本当はcleanしたほうがいいのかも知れませんが、かなり時間がかかるので。結局、1時間以上経ってからようやくコンパイルが終わってinstallが完了しました。あとは、自分のホームフォルダの.bashrcや.cshrcでパスを通す設定をすれば完了です。