内容正在载入中,请稍后……
公告
搜索
统计
其他
2 May.2021

CentOS6.10升级gcc版本到4.7或更高版本 不指定

作者: 我就是个世界   分类:技术&学习 » Linux   出处:本站原创            | |
引用

环境:CentOS release 6.10 (Final)
gcc版本是4.4.7, 不支持C++11标准的特性


2020年12月2日,centos官方停止了对centos6的所有更新,并且下架了包括官方所有的centos6源,目前阿里、163、清华等centos6源已无法使用。CentOS 6已经停止更新支持,同时官方也把yum源删除了,目前CentOS 6系统使用yum命令安装软件包基本都是失败,因此需要更换yum源

一.修改镜像源
1.进入到/etc/yum.repos.d/目录
cd /etc/yum.repos.d/

2.保留一个原文件
cp CentOS-Base.repo CentOS-Base.repo.old

3.使用编辑器修改配置文件
vi CentOS-Base.repo

4.修改如下:
先注释掉所有的mirrorlist行
放开所有的baseurl行,并将所有的
http://mirror.centos.org/centos/$releasever
替换为
http://vault.centos.org/6.10

修改结果如下:

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-6.10 - Base
#mirrorlist=http://mirrorlist.centos.org/?release=6.10&arch=$basearch&repo=os&infra=$infra
baseurl=http://vault.centos.org/6.10/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#released updates
[updates]
name=CentOS-6.10 - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=6.10&arch=$basearch&repo=updates&infra=$infra
baseurl=http://vault.centos.org/6.10/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful
[extras]
name=CentOS-6.10 - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=6.10&arch=$basearch&repo=extras&infra=$infra
baseurl=http://vault.centos.org/6.10/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-6.10 - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=6.10&arch=$basearch&repo=centosplus&infra=$infra
baseurl=http://vault.centos.org/6.10/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#contrib - packages by Centos Users
[contrib]
name=CentOS-6.10 - Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=6.10&arch=$basearch&repo=contrib&infra=$infra
baseurl=http://vault.centos.org/6.10/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6


5.清空镜像缓存并且更新yum

yum clean all
yum update -y



二、升级gcc版本
引用
gcc 升级的两种方法
目前知道两种升级gcc 的方法:

直接编译安装新版本的gcc (目测前方坑很多, 本人没有尝试)
安装devtoolset来升级gcc, (网上说这种方式很简单,本人尝试成功)


使用devtoolset升级gcc版本

下面通过devtoolset来升级下gcc
devtoolset目前已经有7个版本:devtoolset-1.1 devtoolset-2 devtoolset-3 devtoolset-4,以上版本分别对应gcc的版本为4.7、4.8、4.9、5.2。 更高的到devtoolset-7(如果想升级到其他版本,可以google下相关的关键字)
下面是升级步骤(在centOS 6.10上亲测有效)


cd /etc/yum.repos.d
wget http://people.centos.org/tru/devtools/devtools.repo
sudo sh -c'echo“ enabled = 1” >> /etc/yum.repos.d/devtools-1.1.repo'
sudo yum install devtoolset-1.1
yum install devtoolset-1.1-gcc  devtoolset-1.1-gcc-c++
gcc -v

此时 gcc版本依然是4.4.7,升级之后需要启动devtoolset)

source /opt/centos/devtoolset-1.1/enable
gcc -v  

此时 gcc版本已经是4.7.2了
gcc version 4.7.2 20121015 (Red Hat 4.7.2-5) (GCC)


如果到升级到4.9版本,执行如下命令:

wget https://copr.fedoraproject.org/coprs/rhscl/devtoolset-3/repo/epel-6/rhscl-devtoolset-3-epel-6.repo -O /etc/yum.repos.d/devtools-3.repo     //执行了下面的命令若可用,这一步好像没什么用了,
yum install centos-release-scl-rh centos-release-scl
yum install devtoolset-3-gcc devtoolset-3-binutils devtoolset-3-gcc-c++

如果报错,提示找不到源,则删除/etc/yum.repos.d/目录下其他无关的repo文件 [只留下CentOS-Base.repo即可]
重建yum缓存, 更新并启用新的yum源
yum clean all && yum makecache

再次执行上面的命令
yum install devtoolset-3-gcc devtoolset-3-binutils devtoolset-3-gcc-c++

安装完成后,重启devtoolset

source /opt/rh/devtoolset-3/enable

gcc -v

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-3/root/usr/libexec/gcc/x86_64-redhat-linux/4.9.2/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/opt/rh/devtoolset-3/root/usr --mandir=/opt/rh/devtoolset-3/root/usr/share/man --infodir=/opt/rh/devtoolset-3/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --enable-languages=c,c++,fortran,lto --enable-plugin --with-linker-hash-style=gnu --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.9.2-20150212/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.9.2-20150212/obj-x86_64-redhat-linux/cloog-install --with-mpc=/builddir/build/BUILD/gcc-4.9.2-20150212/obj-x86_64-redhat-linux/mpc-install --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.9.2 20150212 (Red Hat 4.9.2-6) (GCC)


参考文档:
1. 使用docker安装centos6.10镜像并安装新版gcc
2. 使用devtoolset升级GCC版本
3. CentOS6安装rpm时报错“Cannot find a valid baseurl for repo: centos-sclo-rh“的解决办法
分享到QQ空间
最后编辑: 我就是个世界 编辑于May 2, 2021 11:32
时间:10:36 评论(0) 引用(0) 阅读(211) Tags: , ,
发表评论
  昵称 [注册]
  密码 (游客无需密码)
  网址
  电邮
OpenID登入 权限选项 表情