低版本的gcc编译安装

一些软件只支持gcc4.1版本的编译,例如淘宝的TFS就需要在4.1.2版本上编译,高版本的gcc编译时会出现一些错误。
我的操作系统时CentOS6.6 64位,gcc的版本是4.4.7,需要安装低版本的gcc来编译指定的软件。

在安装gcc前,首先要安装 texinfo。
yum install texinfo

64位的系统还需要安装 glibc-devel.i686 和 libstdc++-devel.i686
yum install glibc-devel.i686 libstdc++-devel.i686

然后下载gcc-4.1.2
wget http://mirrors.ustc.edu.cn/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2
或者到GCC网站上(http://gcc.gnu.org)下载。可供下载的文件一般有两种形式:gcc-4.1.2.tar.gz和gcc-4.1.2.tar.bz2,压缩格式不一样,内容完全一致。
解压
bzcat gcc-4.1.2.tar.bz2 | tar xvf –
(或tar zxvf gcc-4.1.2.tar.gz)

进入gcc-4.1.2
cd gcc-4.1.2

配置
./configure –prefix=/usr/local/gcc-4.1.2 –enable-threads=posix –disable-checking –enable–long-long –enable-languages=c,c++,java
在配置这一步我报了一个错误,错误代码如下:

 WARNING: `makeinfo' is missing on your system. You should only need it if 
    you modified a `.texi' or `.texinfo' file, or any other file 
    indirectly affecting the aspect of the manual. The spurious 
    call might also be the consequence of using a buggy `make' (AIX, 
    DU, IRIX). You might want to install the `Texinfo' package or 
    the `GNU make' package. Grab either from any GNU archive site. 
    make[3]: *** [fastjar.info] 错误 1 
    make[3]:正在离开目录 `/home/ssm/gcc-obj/fastjar' 
    make[2]: *** [all] 错误 2 
    make[2]:正在离开目录 `/home/ssm/gcc-obj/fastjar' 
    make[1]: *** [all-fastjar] 错误 2 
    make[1]:正在离开目录 `/home/ssm/gcc-obj' 
    make: *** [all] 错误 2

此错误代码是我在网上找的,但是内容一致,只是一个是英文一个是中文。
造成此错误的原因是configure文件中texinfo对该版本不支持,可以在解压gcc-4.1.2文件夹中的configure文件里找到以下语句:

# For an installed makeinfo, we require it to be from texinfo 4.2 or
# higher, else we use the "missing" dummy.
if ${MAKEINFO} --version \
| egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])' >/dev/null 2>&1; then
:
else
MAKEINFO="$MISSING makeinfo"

其中4\.[2-9]|[5-9]表示的是支持4.2-4.9之间的几个版本,所以需要自己添加4\.[1-9][0-9]*,以支持4.1.2版本。
讲 ‘texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])’ 改成 ‘texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|4\.[1-9][0-9]*|[5-9])’ 保存退出,再配置就通过了。

然后make && make install

编译安装成功后,在/usr/bin中创建软链接
ln -s /usr/local/gcc-4.1.2/bin/gcc /usr/bin/gcc412
ln -s /usr/local/gcc-4.1.2/bin/g++ /usr/bin/g++412
ln -s /usr/local/gcc-4.1.2/bin/cpp /usr/bin/cpp412

这样,就可以分别使用gcc412、g++412、gcj412来调用GCC 4.1.2的gcc、g++、gcj完成对C、C++、JAVA程序的编译了。同时,仍然能够使用高版本的GCC编译器中的gcc、g++等命令。

发表评论

电子邮件地址不会被公开。 必填项已用*标注