CentOS 7.6对gcc版本降级
说明
系统版本:CentOS 7.6
gcc版本:7.1.0
准备降级至gcc版本:4.8.5
理由:在使用gcc7.1.0编译某些程序时会因版本过新而报错,所以对gcc进行降级
具体操作流程
查询当前gcc版本
命令:gcc -v
下载所需版本的gcc压缩包
网址: http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/
安装所需版本gcc
命令:
tar -xvf gcc-4.8.5.tar.bz2
cd gcc-4.8.5/
./contrib/download_prerequisites
mkdir build
cd build
../configure --prefix=/usr/local/gcc4.8.5 --enable-checking=release --enable-languages=c,c++ --disable-multilib
make
make install
注意事项
make耗时很长,可能需要用上一个小时左右。
另外,在make 时可能会报错:
cfns.gperf:101:1: error: 'const char* libc_name_p(const char*, unsigned int)' redeclared inline with 'gnu_inline' attribute
原因是因为此时是用高版本的gcc去编译低版本gcc。
解决方法如下:
修改要编译的低版本gcc代码,参考链接:
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=ec1cc0263f156f70693a62cf17b254a0029f4852.
要修改的文件的三个文件所在位置:/gcc-4.8.5/gcc/cp
三个文件分别是:
cfns.gperf、cfns.h、except.c
按照参考链接进行修改即可,行最前面是 + 的代表要加进代码里的内容,行最前面是 - 的代表要从代码里减去的,对应的行数可能会稍有不同,仔细查看即可发现。
修改完成后再进行make,然后进行make install安装即可。
gcc高低版本切换
先放上这部分我所参考的博客信息:
作者:lakemi
来源:CSDN
原文链接: https://blog.csdn.net/lake1314/article/details/80097516.
首先查看当前安装有多少个gcc版本
命令:find /usr -name gcc
大概会显示如下:
/usr/lib/gcc
/usr/local/lib/gcc
/usr/local/bin/gcc
/usr/local/libexec/gcc
/usr/bin/gcc
若要知道这些gcc对应的都是哪个版本,只需敲如下命令
命令:/usr/local/bin/gcc -v
显示结果:gcc version 7.1.0 (GCC)
而/usr/local/bin/gcc也正是系统当前使用的gcc版本。
下面将介绍如何去切换成我们所需的gcc版本
更改gcc:
mkdir -p /usr/local/bin/gcc-6.1.0
mv /usr/local/bin/gcc /usr/local/bin/gcc-6.1.0
ln -s /usr/bin/gcc /usr/local/bin/gcc
更改g++:
mkdir -p /usr/local/bin/gcc-6.1.0
mv /usr/local/bin/gcc /usr/local/bin/gcc-6.1.0
ln -s /usr/bin/gcc /usr/local/bin/gcc
更改c++:
mkdir -p /usr/local/bin/gcc-6.1.0
mv /usr/local/bin/gcc /usr/local/bin/gcc-6.1.0
ln -s /usr/bin/gcc /usr/local/bin/gcc
上述命令完成后再敲
gcc -v
就可以看到此时运行的gcc已经切换成我们所要的版本了
以上是我根据自己遇到的问题及实际的情况收集到解决方法,当然也试了不少行不通的方法,在此写一篇博客记录一下,也希望能帮到遇到同样问题的朋友,同时对提出以上方法的各位表示感谢!