It has been long after releasing the GNU GCC 8.x, but at last, there is a trusted repository, which has offered us packages for GNU GCC 8.x, which won’t break your system! Many of us prefer CentOS 7 because it offers free enterprise-class operating system and as mentioned in our article before – How to install new gcc and development tools under CentOS 7 there are a couple of approved external repositories for CentOS, which you can trust https://wiki.centos.org/AdditionalResources/Repositories. In one of them Software Collection – https://www.softwarecollections.org/en/scls/ several months ago the GNU GCC 8.x packages were added!
At present, the GNU GCC version is gcc (GCC) 8.3.1 20190311 (Red Hat 8.3.1-3).
Here are the steps how you can install GNU GCC 8 and how you can use it:
STEP 1) Update your system and install the repository in your system
The commands:
yum update -y yum -y install centos-release-scl
The output in our server:
[root@my-centos7 ~]# yum update -y Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.coreix.net * extras: mirror.netweaver.uk * updates: mirror.netweaver.uk No packages marked for update [root@my-centos7 ~]# yum -y install centos-release-scl Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.coreix.net * extras: mirror.netweaver.uk * updates: mirror.netweaver.uk Resolving Dependencies --> Running transaction check ---> Package centos-release-scl.noarch 0:2-3.el7.centos will be installed --> Processing Dependency: centos-release-scl-rh for package: centos-release-scl-2-3.el7.centos.noarch --> Running transaction check ---> Package centos-release-scl-rh.noarch 0:2-3.el7.centos will be installed --> Finished Dependency Resolution Dependencies Resolved ============================================================================================================================================================================ Package Arch Version Repository Size ============================================================================================================================================================================ Installing: centos-release-scl noarch 2-3.el7.centos extras 12 k Installing for dependencies: centos-release-scl-rh noarch 2-3.el7.centos extras 12 k Transaction Summary ============================================================================================================================================================================ Install 1 Package (+1 Dependent package) Total download size: 24 k Installed size: 39 k Downloading packages: (1/2): centos-release-scl-rh-2-3.el7.centos.noarch.rpm | 12 kB 00:00:00 (2/2): centos-release-scl-2-3.el7.centos.noarch.rpm | 12 kB 00:00:00 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 156 kB/s | 24 kB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : centos-release-scl-rh-2-3.el7.centos.noarch 1/2 Installing : centos-release-scl-2-3.el7.centos.noarch 2/2 Verifying : centos-release-scl-2-3.el7.centos.noarch 1/2 Verifying : centos-release-scl-rh-2-3.el7.centos.noarch 2/2 Installed: centos-release-scl.noarch 0:2-3.el7.centos Dependency Installed: centos-release-scl-rh.noarch 0:2-3.el7.centos Complete!
STEP 2) Install the development tools and GNU GCC 8, which is part of the “devtools” package
[root@my-centos7 ~]# yum install devtoolset-8 Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.coreix.net * centos-sclo-rh: mirror.netweaver.uk * centos-sclo-sclo: mirror.netweaver.uk * extras: mirror.netweaver.uk * updates: mirror.netweaver.uk Resolving Dependencies --> Running transaction check ---> Package devtoolset-8.x86_64 0:8.1-1.el7 will be installed --> Processing Dependency: devtoolset-8-toolchain for package: devtoolset-8-8.1-1.el7.x86_64 --> Processing Dependency: devtoolset-8-runtime for package: devtoolset-8-8.1-1.el7.x86_64 --> Processing Dependency: devtoolset-8-perftools for package: devtoolset-8-8.1-1.el7.x86_64 --> Running transaction check ---> Package devtoolset-8-perftools.x86_64 0:8.1-1.el7 will be installed --> Processing Dependency: devtoolset-8-valgrind for package: devtoolset-8-perftools-8.1-1.el7.x86_64 --> Processing Dependency: devtoolset-8-systemtap for package: devtoolset-8-perftools-8.1-1.el7.x86_64 --> Processing Dependency: devtoolset-8-oprofile for package: devtoolset-8-perftools-8.1-1.el7.x86_64 --> Processing Dependency: devtoolset-8-dyninst for package: devtoolset-8-perftools-8.1-1.el7.x86_64 ..... ..... --> Finished Dependency Resolution Dependencies Resolved ============================================================================================================================================================================ Package Arch Version Repository Size ============================================================================================================================================================================ Installing: devtoolset-8 x86_64 8.1-1.el7 centos-sclo-rh 5.4 k Installing for dependencies: audit-libs-python x86_64 2.8.4-4.el7 base 76 k avahi-libs x86_64 0.6.31-19.el7 base 61 k boost-date-time x86_64 1.53.0-27.el7 base 52 k boost-system x86_64 1.53.0-27.el7 base 40 k boost-thread x86_64 1.53.0-27.el7 base 57 k checkpolicy x86_64 2.5-8.el7 base 295 k cpp x86_64 4.8.5-36.el7_6.2 updates 5.9 M devtoolset-8-binutils x86_64 2.30-54.el7 centos-sclo-rh 5.5 M devtoolset-8-dwz x86_64 0.12-1.1.el7 centos-sclo-rh 98 k devtoolset-8-dyninst x86_64 9.3.2-6.el7 centos-sclo-rh 3.6 M devtoolset-8-elfutils x86_64 0.176-1.el7 centos-sclo-rh 431 k devtoolset-8-elfutils-libelf x86_64 0.176-1.el7 centos-sclo-rh 202 k devtoolset-8-elfutils-libs x86_64 0.176-1.el7 centos-sclo-rh 311 k devtoolset-8-gcc x86_64 8.3.1-3.1.el7 centos-sclo-rh 30 M devtoolset-8-gcc-c++ x86_64 8.3.1-3.1.el7 centos-sclo-rh 12 M devtoolset-8-gcc-gfortran x86_64 8.3.1-3.1.el7 centos-sclo-rh 12 M devtoolset-8-gdb x86_64 8.2-3.el7 centos-sclo-rh 3.4 M devtoolset-8-libquadmath-devel x86_64 8.3.1-3.1.el7 centos-sclo-rh 155 k devtoolset-8-libstdc++-devel x86_64 8.3.1-3.1.el7 centos-sclo-rh 2.7 M devtoolset-8-ltrace x86_64 0.7.91-1.el7 centos-sclo-rh 148 k devtoolset-8-make x86_64 1:4.2.1-4.el7 centos-sclo-rh 485 k devtoolset-8-memstomp x86_64 0.1.5-5.el7 centos-sclo-rh 442 k devtoolset-8-oprofile x86_64 1.3.0-2.el7 centos-sclo-rh 1.8 M devtoolset-8-perftools x86_64 8.1-1.el7 centos-sclo-rh 2.8 k devtoolset-8-runtime x86_64 8.1-1.el7 centos-sclo-rh 20 k devtoolset-8-strace x86_64 4.24-4.el7 centos-sclo-rh 1.0 M devtoolset-8-systemtap x86_64 3.3-2.el7 centos-sclo-rh 144 k devtoolset-8-systemtap-client x86_64 3.3-2.el7 centos-sclo-rh 2.8 M devtoolset-8-systemtap-devel x86_64 3.3-2.el7 centos-sclo-rh 2.2 M devtoolset-8-systemtap-runtime x86_64 3.3-2.el7 centos-sclo-rh 427 k devtoolset-8-toolchain x86_64 8.1-1.el7 centos-sclo-rh 3.0 k devtoolset-8-valgrind x86_64 1:3.14.0-16.el7 centos-sclo-rh 11 M gcc x86_64 4.8.5-36.el7_6.2 updates 16 M glibc-devel x86_64 2.17-260.el7_6.6 updates 1.1 M glibc-headers x86_64 2.17-260.el7_6.6 updates 684 k kernel-debug-devel x86_64 3.10.0-957.27.2.el7 updates 17 M kernel-headers x86_64 3.10.0-957.27.2.el7 updates 8.0 M libcgroup x86_64 0.41-20.el7 base 66 k libgfortran5 x86_64 8.2.1-1.3.1.el7_5 updates 796 k libmpc x86_64 1.0.1-3.el7 base 51 k libquadmath x86_64 4.8.5-36.el7_6.2 updates 189 k libsemanage-python x86_64 2.5-14.el7 base 113 k mpfr x86_64 3.1.1-4.el7 base 203 k perl x86_64 4:5.16.3-294.el7_6 updates 8.0 M perl-Carp noarch 1.26-244.el7 base 19 k perl-Encode x86_64 2.51-7.el7 base 1.5 M perl-Exporter noarch 5.68-3.el7 base 28 k perl-File-Path noarch 2.09-2.el7 base 26 k perl-File-Temp noarch 0.23.01-3.el7 base 56 k perl-Filter x86_64 1.49-3.el7 base 76 k perl-Getopt-Long noarch 2.40-3.el7 base 56 k perl-HTTP-Tiny noarch 0.033-3.el7 base 38 k perl-PathTools x86_64 3.40-5.el7 base 82 k perl-Pod-Escapes noarch 1:1.04-294.el7_6 updates 51 k perl-Pod-Perldoc noarch 3.20-4.el7 base 87 k perl-Pod-Simple noarch 1:3.28-4.el7 base 216 k perl-Pod-Usage noarch 1.63-3.el7 base 27 k perl-Scalar-List-Utils x86_64 1.27-248.el7 base 36 k perl-Socket x86_64 2.010-4.el7 base 49 k perl-Storable x86_64 2.45-3.el7 base 77 k perl-Text-ParseWords noarch 3.29-4.el7 base 14 k perl-Time-HiRes x86_64 4:1.9725-3.el7 base 45 k perl-Time-Local noarch 1.2300-2.el7 base 24 k perl-constant noarch 1.27-2.el7 base 19 k perl-libs x86_64 4:5.16.3-294.el7_6 updates 688 k perl-macros x86_64 4:5.16.3-294.el7_6 updates 44 k perl-parent noarch 1:0.225-244.el7 base 12 k perl-podlators noarch 2.5.1-3.el7 base 112 k perl-threads x86_64 1.87-4.el7 base 49 k perl-threads-shared x86_64 1.43-6.el7 base 39 k policycoreutils-python x86_64 2.5-29.el7_6.1 updates 456 k python-IPy noarch 0.75-6.el7 base 32 k scl-utils x86_64 20130529-19.el7 base 24 k setools-libs x86_64 3.3.8-4.el7 base 620 k unzip x86_64 6.0-19.el7 base 170 k zip x86_64 3.0-11.el7 base 260 k Transaction Summary ============================================================================================================================================================================ Install 1 Package (+76 Dependent packages) Total download size: 155 M Installed size: 411 M Is this ok [y/d/N]: y Downloading packages: (1/77): audit-libs-python-2.8.4-4.el7.x86_64.rpm ..... ..... Installed: devtoolset-8.x86_64 0:8.1-1.el7 Dependency Installed: audit-libs-python.x86_64 0:2.8.4-4.el7 avahi-libs.x86_64 0:0.6.31-19.el7 boost-date-time.x86_64 0:1.53.0-27.el7 boost-system.x86_64 0:1.53.0-27.el7 boost-thread.x86_64 0:1.53.0-27.el7 checkpolicy.x86_64 0:2.5-8.el7 cpp.x86_64 0:4.8.5-36.el7_6.2 devtoolset-8-binutils.x86_64 0:2.30-54.el7 devtoolset-8-dwz.x86_64 0:0.12-1.1.el7 devtoolset-8-dyninst.x86_64 0:9.3.2-6.el7 devtoolset-8-elfutils.x86_64 0:0.176-1.el7 devtoolset-8-elfutils-libelf.x86_64 0:0.176-1.el7 devtoolset-8-elfutils-libs.x86_64 0:0.176-1.el7 devtoolset-8-gcc.x86_64 0:8.3.1-3.1.el7 devtoolset-8-gcc-c++.x86_64 0:8.3.1-3.1.el7 devtoolset-8-gcc-gfortran.x86_64 0:8.3.1-3.1.el7 devtoolset-8-gdb.x86_64 0:8.2-3.el7 devtoolset-8-libquadmath-devel.x86_64 0:8.3.1-3.1.el7 devtoolset-8-libstdc++-devel.x86_64 0:8.3.1-3.1.el7 devtoolset-8-ltrace.x86_64 0:0.7.91-1.el7 devtoolset-8-make.x86_64 1:4.2.1-4.el7 devtoolset-8-memstomp.x86_64 0:0.1.5-5.el7 devtoolset-8-oprofile.x86_64 0:1.3.0-2.el7 devtoolset-8-perftools.x86_64 0:8.1-1.el7 devtoolset-8-runtime.x86_64 0:8.1-1.el7 devtoolset-8-strace.x86_64 0:4.24-4.el7 devtoolset-8-systemtap.x86_64 0:3.3-2.el7 devtoolset-8-systemtap-client.x86_64 0:3.3-2.el7 devtoolset-8-systemtap-devel.x86_64 0:3.3-2.el7 devtoolset-8-systemtap-runtime.x86_64 0:3.3-2.el7 devtoolset-8-toolchain.x86_64 0:8.1-1.el7 devtoolset-8-valgrind.x86_64 1:3.14.0-16.el7 gcc.x86_64 0:4.8.5-36.el7_6.2 glibc-devel.x86_64 0:2.17-260.el7_6.6 glibc-headers.x86_64 0:2.17-260.el7_6.6 kernel-debug-devel.x86_64 0:3.10.0-957.27.2.el7 kernel-headers.x86_64 0:3.10.0-957.27.2.el7 libcgroup.x86_64 0:0.41-20.el7 libgfortran5.x86_64 0:8.2.1-1.3.1.el7_5 libmpc.x86_64 0:1.0.1-3.el7 libquadmath.x86_64 0:4.8.5-36.el7_6.2 libsemanage-python.x86_64 0:2.5-14.el7 mpfr.x86_64 0:3.1.1-4.el7 perl.x86_64 4:5.16.3-294.el7_6 perl-Carp.noarch 0:1.26-244.el7 perl-Encode.x86_64 0:2.51-7.el7 perl-Exporter.noarch 0:5.68-3.el7 perl-File-Path.noarch 0:2.09-2.el7 perl-File-Temp.noarch 0:0.23.01-3.el7 perl-Filter.x86_64 0:1.49-3.el7 perl-Getopt-Long.noarch 0:2.40-3.el7 perl-HTTP-Tiny.noarch 0:0.033-3.el7 perl-PathTools.x86_64 0:3.40-5.el7 perl-Pod-Escapes.noarch 1:1.04-294.el7_6 perl-Pod-Perldoc.noarch 0:3.20-4.el7 perl-Pod-Simple.noarch 1:3.28-4.el7 perl-Pod-Usage.noarch 0:1.63-3.el7 perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 perl-Socket.x86_64 0:2.010-4.el7 perl-Storable.x86_64 0:2.45-3.el7 perl-Text-ParseWords.noarch 0:3.29-4.el7 perl-Time-HiRes.x86_64 4:1.9725-3.el7 perl-Time-Local.noarch 0:1.2300-2.el7 perl-constant.noarch 0:1.27-2.el7 perl-libs.x86_64 4:5.16.3-294.el7_6 perl-macros.x86_64 4:5.16.3-294.el7_6 perl-parent.noarch 1:0.225-244.el7 perl-podlators.noarch 0:2.5.1-3.el7 perl-threads.x86_64 0:1.87-4.el7 perl-threads-shared.x86_64 0:1.43-6.el7 policycoreutils-python.x86_64 0:2.5-29.el7_6.1 python-IPy.noarch 0:0.75-6.el7 scl-utils.x86_64 0:20130529-19.el7 setools-libs.x86_64 0:3.3.8-4.el7 unzip.x86_64 0:6.0-19.el7 zip.x86_64 0:3.0-11.el7 Complete!
STEP 3) Use the installed tools.
Because using such a package with multiple complex packages you must configure multiple environments and links to the versions you installed replacing the ones from your base system, but the package comes with a handy tool, which executing it will configure everything and you are ready to go!
scl enable devtoolset-8 bash
Whenever you want to use the new GCC you must execute it or you will end up with the default one.
[root@my-centos7 ~]# scl enable devtoolset-8 bash [root@my-centos7 ~]# gcc --version gcc (GCC) 8.3.1 20190311 (Red Hat 8.3.1-3) Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Using Software Collection you could install multiple GNU GCC version 6, 7 (we have article on the subject – How to install new gcc and development tools under CentOS 7) and now 8.
Thank you! This worked exactly as you stated.