低版本的gcc编译安装

2015-02-04 14:33
CentOS GCC 编译安装 低版本
摘要:有些老项目只能用 GCC 4.1 编译,记录一下在 CentOS 6.6 上编译安装 GCC 4.1.2 的完整过程,包括 texinfo 版本兼容问题。

一些软件只支持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++等命令。