昨晚编译一个交叉工具链的时候,需要gcc-4.1.2版本的,我的4.6版本它编译不了,很奇怪。下面是gcc-4.1.2的安装。
源码下载:ftp://ftp.gnu.org/gnu/gcc/gcc-4.1.2/
解包:tar -xvf gcc-4.1.2.tar.bz2
进入目录:cd gcc-4.1.2
# ./configure –prefix=/usr/local/gcc-4.1.2&& make
接着就出现错误
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
这里有一个文章 http://blog.youkuaiyun.com/galois_godel/article/details/6750331
下面是摘要:
(主要原因是GCC的版本过高)
1:全英文的这部分说的是你的系统中缺少相应版本的makeinfo软件。
因为gcc4.1以上的版本需要makeinfo的版本为4.2或更高。
所以输入命令行:
makeinfo –version 想查看makeinfo的版本。结果得到了以下信息:
The program ‘makeinfo’ is currently not installed. You can install it by typing:
yum install texinfo
按照提示输入命令,问题得到解决。
2:本机使用的Texinfo是4.11版本,
出现此错误的原因也在于configure文件中texinfo对该版本不支持,可以在解压gcc4.1.1文件夹中的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”
fi
;;
其中4\.[2-9]|[5-9]表示的是支持4.2-4.9之间的几个版本,所以需要自己添加4\.[1-9][0-9]*,以支持4.11版本。即把’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 install
这时候先查看gcc版本
#gcc -v
发现还是4.6版本的,于是就卸载4.6版本
#rpm -e gcc-c++
#rpm -e gcc
然后建立链接
# ln -s /usr/local/gcc-4.1.2/bin/gcc /usr/bin/gcc2
# ln -s /usr/local/gcc-4.1.2/bin/g++ /usr/bin/g++2