转:http://www.th7.cn/system/lin/201406/61392.shtml


GCC的编译通用步骤为:

第一、在源文件目录(source)之外建立一个临时目录(build)和一个安装目录(bin)。

第二、定位到临时目录,在临时目录中调用SOURCE目录中的configure命令再在此命令后面加上你想要的参数其中必需有定位安装目录的选项。

第三、还是在临时目录中执行make命令生成安装文件,此过程耗时异长,完事之后可以make check检查一下。

第四、同样在临时目录下执行make install命令把二进制文件安装到安装目录BIN中。

在此编译过程中出现了几个问题,由于是第一次编译GCC,所以用了狠长时间来解决。

安装前浏览了源文件中INSTALL目录中的各个文件

自己的系统是VM下的redhatLinux9.0,系统自己的GCC版本是3.3.2的。

出 现的第一个问题是:在GCC的configure时发现系统没有GMP和MPFR。就在GNU的官网上下了个GMP又在MPFR官网上下了个MPFR, (这两个东西中GMP安装完经check全部通过,而MPFR有两个选项通不过。不过发现对GCC的安装没有影响),至此第一个问题得到解决。

出现的第二个问题是:make过程中出现:

“checking for suffix of object files... configure: error: cannot compute suffix of object files: cannot compile

See `config.log' for more details.

make[2]: *** [configure-stage1-target-libgcc] Error 1

make[2]: Leaving directory `/tmp/gcc-4.3.2'

make[1]: *** [stage1-bubble] Error 2

make[1]: Leaving directory `/tmp/gcc-4.3.2'

make: *** [bootstrap] Error 2

从 shell输出中(向上找)发现错误出在目录i686-pc-linux-gnu中从目录中的config.log中找到了错误的原因:“when loading shared libraries:libmpfr.so.1:cannot open shared object file: No such file or directory”.这个错误可是耗了我N多小时。(明明我的configure选项中明确的指出了 --with-mpfr=的地址)没办法上网查,发现有一个网上的办法是“remove the shared libmpfr.so.1”的方法,可是怎么remove就不知道了,可能因为是菜鸟的缘故吧,继续上网查找,终于找到了解决办法,原来这么简单,对菜鸟 的我却用了N小时,汗。办法就是把libmpfr.so.1的地址加到LD_LIBRARY_PATH中,至此问题解决。接下来就是漫长的编译--------。

编译都两个小时了,此时可别再发生错误呀,担心呀,不过问题还是出现了

第三个问题出现了,由于我已经make distclean了出错的输出已经没有了,我可不愿意再编译一次了不过相似的错误输出网上有:类似

“configure :former value : -g -O2

     Configure:current value: -g  -O2 ”形式,就是先前的值和现在的不一样的意思。

这个问题解决倒是挺快的,在网上一查原来是config.cache捣的鬼,到相应的出错目录下把config,cache删除就OK了!接下来又是漫长的等待---------。

最后编译完成,make install.完事