C++0x Macにて。

概要

MacPorts無しでGCC4.6入れた。無駄に頑張ったけど、最終的には簡単だった。そのまとめ。私の環境は64bitモードだったけど、他の人のMacで試したときは32bitモードだったので、そこらへんはあまり関係ないみたい。
ところで、gcc-4.6, gcc-46, gcc4.6, gcc46など、いくつかの表記があるんだけど、どれが正しいのでしょうか。

必要なもの

無きゃ無いで、curl, svnでもできますけど、ここではwget, gitを使います。

GCCソースコードをダウンロードする

mkdir ~/src
cd ~/src
git clone git://gcc.gnu.org/git/gcc.git
mv gcc gcc46

GMP, MPC, MPFRを用意する

最新版がいいみたいです。他のバージョンを試したらはまった。

  1. ダウンロードする
  2. 解凍する
  3. ディレクトリ名をそれぞれgmp, mpfr, mpcに変える
  4. gccディレクトリに移す

ダウンロードの方法は以下のように。

wget ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.gz
wget http://www.mpfr.org/mpfr-current/mpfr-3.0.0.tar.gz
wget http://www.multiprecision.org/mpc/download/mpc-0.8.2.tar.gz

準備

cd ~/src/gcc46
mkdir install
mkdir build

configure

cd ~/src/gcc46/build
../configure --prefix=$(cd ../install/ && pwd) --disable-checking --enable-werror --enable-languages=c,c++

最後の--enable-languages=c,c++は、gcc,g++だけを作らせるオプションです。それでもmakeには1時間半かかります。
--suffix=`date "+%Y-%m-%d"`とかやるといいかも。

make

Makefileができなかった人は、お赦しください!

make
make check
make install

インストール先は、~/src/gcc46/installです。

エイリアスでも登録しておくか

alias gcc46='~/src/gcc46/install/bin/gcc'
alias g++46='~/src/gcc46/install/bin/g++ -std=c++0x'

試す

見てのとおり、これはただのC++です。魔法は使ってません。

test.cpp
#include <iostream>
#include <vector>
using namespace std;

int main()
{
	vector<int> v({ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 });
	for (auto x : v)
		cout << x << ' ';
	cout << endl;
}
コンパイル
g++46 test.cpp
実行
9 8 7 6 5 4 3 2 1 0