CentOS7安装高版本gcc
由于某些比较新的软件需要最新版本的gcc,常用centos 7.2 使用yum install gcc安装的版本为4.8.5可能不满足软件的需求, 这里介绍下怎么折腾最新版本的GCC
GCC官网:https://gcc.gnu.org/
我这里当前版本最新为9.3,那么我们就安装最新版本:
安装环境配置
yum install glibc-headers gcc-c++ gcc gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel
下载
GCC下载地址很多,我们从国内的hust镜像站下载gcc源码包。
http://mirror.hust.edu.cn/gnu/gcc/
我选择的是gcc-9.3.0.tar.gz。
cd
mkdir software
cd software
wget http://mirror.hust.edu.cn/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz
tar zxvf gcc-9.3.0.tar.gz
cd cc-9.3.0
下载依赖包:
./contrib/download_prerequisites
配置
mkdir build
cd build
../configure --prefix=/usr/local/gcc-9.3.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib
configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。其中--prefix选项是配置安装的路径。
如果不配置 --prefix 选项,安装后:
可执行文件默认放在/usr /local/bin
,
库文件默认放在/usr/local/lib
,
配置文件默认放在/usr/local/etc
,
其它的资源文件放在/usr /local/share
configure各项参数详解:
--prefix=/usr/local/gcc-9.3.0/
:把所有资源文件都放在该路径下。
--enable-checking=release
:生成的编译器在编译过程中不做额外检查。
--enable-languages=c,c++
:让gcc支持c,c++。
--disable-multilib
:不生成编译为其他平台可执行代码的交叉编译器。
编译
make
这个过程需要很久。需要耐心等待
安装
make install
善后
如果上面这些步骤你都还没有出错,那么,你成功了90%,我们需要一下善后的工作
-
- 删除yum下载的旧版本gcc
yum remove gcc
- 2.将新版本的gcc加入命令搜索路径中:
ln -s /usr/local/gcc-9.3.0/bin/gcc /usr/bin/gcc
ln -s /usr/local/gcc-9.3.0/bin/g++ /usr/bin/g++
- 3.添加LD_LIBRARY_PATH环境变量
在/etc/profile中添加如下代码:
# gcc
LD_LIBRARY_PATH=/usr/local/gcc-9.3.0/lib
#export LD_LIBRARY_PATH
更改完后执行
source /etc/profile
- 4.最后更换libstdc++.so.6
cp /usr/local/gcc-9.3.0/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6.0.28
rm -f /usr/lib64/libstdc++.so.6
ln -s /usr/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6
对于第四步不明白的可以使用
strings /usr/local/gcc-9.3.0/lib64/libstdc++.so.6.0.28 | grep GLIBCXX
对比一下替换前和替换后的/libstdc++.so.6有什么区别
如有问题请留言,我们一起折腾