首先我得说一个跟gcc没任何关系,但却是每个cygwin使用者必须知道的东西,那就是rebaseall。
这个跟cygwin在windows上模拟出unix的fork函数的实现有关。在cygwin中安装了新包,或者更新了旧包,都可能导致fork发生问题,而fork在unix血统的程序中又是那么地常用。
一旦出了什么你觉得不该出的问题,在尝试解决之前,首先rebaseall一下,很有可能rebaseall之后一切就正常了。
如何rebaseall呢?
关闭所有的cygwin程序
然后Win+R
输入f:\cygwin\bin\ash.exe回车 (我的cygwin装在了F盘)
然后输入/bin/rebaseall
好啦,这就rebaseall完了。
一定记住了。
===============================================================
为了装gcc 4.7.2,得先装三个gcc所依赖的库,它们分别是:gmp, mprf, mpc
由于这三个库之间也有依赖关系,所以你得按我列出来的顺序依次安装
可于以下这些地方下载这三个库的源码包:
http://gmplib.org/ (我下的是gmp-5.0.5.tar.bz2)
http://mpfr.org/ (我下的是mpfr-3.1.1.tar.bz2)
http://www.multiprecision.org/ (我下的是mpc-1.0.1.tar.gz)
下载下来后用tar -xf解开
修改~/.bash_profile,加入以下三行
export LD_LIBRARY_PATH=/usr/local/lib
export LIBRARY_PATH=/usr/local/lib
export CPATH=/usr/local/include
重启cygwin,让这三行生效。
编译gmp:
./configure --disable-static --enable-shared
make
make install
编译mpfr:
./configure --disable-static --enable-shared
make
make install
编译mpc:
./configure
make
make install
编译gcc 4.7.2
mkdir gcc-4.7.2-objdir
cd gcc-4.7.2-objdir
../gcc-4.7.2/configure --prefix=/usr/local/gcc-4.7.2 --enable-languages=c,c++ --disable-bootstrap
make
make install
最后编辑.bash_profile,将gcc 4.7.2的可执行文件所在目录加入PATH环境变量
PATH="/usr/local/gcc-4.7.2/bin:$PATH"
参考:http://cygwin.wikia.com/wiki/How_to_install_a_newer_version_of_GCC