2008年12月12日星期五

在Cygwin下面编译gcc

今天编译sqlite3的一个测试程序,明明sqlite的库在/lib目录下,可是gcc总是报ld链接错误,找不到调用的函数符号,最后google了一下gcc用法,加了-Wall参数,并指定库文件就可以了。 网上分析了一下gcc 3.x和4.x的区别,再查看一下Cygwin下面的gcc竟然是3.4版本的,再看看gcc.gnu.org上面,都已经到4.3.2了,怎能不升级?一方面也可以熟悉一下Cygwin的环境。
到gcc的一个镜像站点下载了最新的源码包gcc-4.3.2.tar.gz,在Windows下面可以用winrar解压,一步到位,很是方便。接下来就可以编译了,打开rxvt,进入解压好的源码文件夹,执行
./configure --enable-languages=c,c++
这里我只要求她支持c和c++,所以加了--enable-languages=c,c++选项。不能不说linux世界里面个人定制做得是非常好的。
过程并不顺利,出错了,查看了一下错误,说是需要gmp和mpfr支持,我的Cygwin环境下面没有,再用google搜索gmp和mpfr,分别下了各自的源码,准备编译安装。再看一下mpfr需要gmp支持,所有就只有先编译gmp了。
同样解压并cd进入源码目录,再
./configure
Omg,这次又出错了,原来gmp需要m4支持。我的心一顿,这该不会进入一个无底洞吧?那样可就没完没了。还是先试着安装m4了再说,google,下载源码,解压,再
./configure
这次终于成功了!再
make
make install
没有问题,m4算是安装完成了。接下来继续中断的gmp安装,cd 进入gmp源码目录,继续
./configure
成功,窃喜,继续
make
make install
依然没有任何问题,继续安装mpfr,cd 进入源码目录
./configure
make
make install
都没有问题,总算松了一口气!终于可以再次安装gcc了,进入源码目录,继续
./configure
我看着一行一行闪过的提示,默默祈祷,希望这次能成功。结果还没到三分钟,屏幕停止了闪动,我心里一愣,难道又出现问题了?再仔细查看,并没有找到error,成功了!而且速度真是快!可能与之前运行过configure有关吧。接下来就是编译了,执行
make
花了产不多3个小时,总算成功!
再make install,很快OK,迫不及待地
gcc -v
发现版本并没有变化,再
g++ -v
版本已经变成了4.3.2,难道我configure出错了?再仔细查看了一遍,参数是--enable-languages=c,c++,没问题。真是奇怪了!!!突然灵光一闪,关掉rxvt,再重启rxvt,继续
gcc -v
版本变成了4.3.2。Thank God!终于圆满成功!不过这个比较奇怪的问题就不得而知了,估计与Cygwin下的bash有关吧!

0 评论: