複数バージョンの使い分け

http://d.hatena.ne.jp/haru-s/20080314/1205496895

gccはドライバプログラム(gcc)と同じディレクトリに「i686-pc-cygwin-gcc-3.4.4」のような名前の実行ファイルがあれば、-Vオプションや-bオプションで複数のバージョンを切り替えて使用することができます。


Cygwingcc 3.4.4と${HOME}/gcc-4.3.0を使い分ける場合、

cd ${HOME}/gcc-4.3.0/bin
ln -s /usr/bin/i686-pc-cygwin-gcc-3.4.4.exe .

としておくと、

% ${HOME}/gcc-4.3.0/bin/gcc -dumpversion
4.3.0

% ${HOME}/gcc-4.3.0/bin/gcc -V 3.4.4 -dumpversion
3.4.4

% ${HOME}/gcc-4.3.0/bin/gcc -V 4.3.0 -dumpversion
4.3.0

となります。
ただし、これらのオプションを使用すると、C言語のドライバプログラムを呼び直すことになるので、C言語以外のビルドには注意が必要です。
C++の場合は「-lstdc++」オプションを手動で指定しなければいけません。

${HOME}/gcc-4.3.0/bin/gcc -V 3.4.4 hello.cpp -lstdc++

gccの代わりにg++を使っても実際の仕事はi686-pc-cygwin-gcc-3.4.4が行うので意味がありません。
C++しか使わない人は、

cd ${HOME}/gcc-4.3.0/bin
rm i686-pc-cygwin-gcc-3.4.4.exe
ln -s /usr/bin/g++.exe i686-pc-cygwin-gcc-3.4.4.exe

とすれば回避できますが、混乱の元なのでやめた方がよいです。