Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Installing gcc 4.8 and Linuxbrew on CentOS 6

Installing gcc 4.8 and Linuxbrew on CentOS 6

The GCC distributed with CentOS 6 is 4.4.7, which is pretty outdated. I'd like to use gcc 4.8+. Also, when trying to install Linuxbrew you run into a dependency loop where Homebrew's gcc depends on zlib, which depends on gcc. Here's how I solved the problem.

Note: Requires sudo privileges.

Resources:

Upgrading gcc

First, verify which version of CentOS you're using:

$ cat /etc/centos-release
CentOS release 6.7 (Final)

Import CERN's GPG key:

sudo rpm --import http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern

Save repository information as /etc/yum.repos.d/slc6-devtoolset.repo on your system:

wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo

Install:

sudo yum install devtoolset-2

Enable the environment:

scl enable devtoolset-2 bash

Test the environment:

$ gcc --version
gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15)
...

$ g++ --version
g++ (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15)
...

$ gfortran --version
GNU Fortran (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15)
...

Optional: Permanently enable scl toolchain by putting this in your .bashrc (warning: don't try to use the scl enable devtoolset-2 bash command from before in your .bashrc. This spawns a new bash shell, and if that's in your .bashrc, it creates a new shell, which loads your .bashrc, which creates a new shell, etc.)

source /opt/rh/devtoolset-2/enable

Installing Linuxbrew

Enable the SCL environment:

scl enable devtoolset-2 bash

Create symlinks to your new gcc/g++/gfortran:

ln -s $(which gcc) `brew --prefix`/bin/gcc-$(gcc -dumpversion |cut -d. -f1,2)
ln -s $(which g++) `brew --prefix`/bin/g++-$(g++ -dumpversion |cut -d. -f1,2)
ln -s $(which gfortran) `brew --prefix`/bin/gfortran-$(gfortran -dumpversion |cut -d. -f1,2)

Install Linuxbrew:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/linuxbrew/go/install)"

Add these to your .bashrc, and source it:

export PATH="$HOME/.linuxbrew/bin:$PATH"
export MANPATH="$HOME/.linuxbrew/share/man:$MANPATH"
export INFOPATH="$HOME/.linuxbrew/share/info:$INFOPATH"

Test your installation:

brew install hello
brew test hello
brew remove hello

kompa3 commented Dec 16, 2015

I managed to install g++ 4.8.2 on Redhat 6.7 with the following commands:

sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
sudo rpm --import http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern
sudo yum install devtoolset-2-gcc-c++-4.8.2-15.1.el6
echo "source /opt/rh/devtoolset-2/enable" >> ~/.bashrc

tomck commented May 6, 2016

There's a slightly more official way, now that devtoolset-2 is deprecated.

https://www.softwarecollections.org/en/scls/rhscl/devtoolset-3/

CERN's page covers this: http://linux.web.cern.ch/linux/devtoolset/

Owner

stephenturner commented Jun 8, 2016

Here's how I upgraded gcc on my latest 6.7 build.

$ cat /etc/centos-release
CentOS release 6.7 (Final)

$ sudo yum install centos-release-scl
$ sudo yum install devtoolset-3-toolchain
$ scl enable devtoolset-3 bash

$ gcc --version
gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
...

$ g++ --version
g++ (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
...

$ gfortran --version
GNU Fortran (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
...

bhavyaw commented Jun 30, 2016

@stephenturner.

Thanks. It worked perfectly!

belm commented Jul 1, 2016

good work

belm commented Jul 1, 2016

sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
sudo rpm --import http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern
sudo yum install devtoolset-2-gcc-c++-4.8.2-15.1.el6
echo "source /opt/rh/devtoolset-2/enable" >> ~/.bashrc
source ~/.bashrc
gcc -v

@stephenturner thanks you da real MVP :)

Why can't I 1+ this man!?!
Thank you @stephenturner !

Who can tell me how to resolve C/CXX compiler identification is unknown issue? (RHEL 6 install gcc-4.8.2)
I follow below to install but looks like the compiler is not properly installed
sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
sudo rpm --import http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern
sudo yum install devtoolset-2-gcc-c++-4.8.2-15.1.el6
echo "source /opt/rh/devtoolset-2/enable" >> ~/.bashrc
Building for SHARP
-- # The C compiler identification is unknown
-- # The CXX compiler identification is unknown
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - failed
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - failed
I got GCC version 4.8.2 that is fine

cc -v

Using built-in specs.
COLLECT_GCC=cc
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-2/root/usr/libexec/gcc/x86_64-redhat-linux/4.8.2/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/opt/rh/devtoolset-2/root/usr --mandir=/opt/rh/devtoolset-2/root/usr/share/man --infodir=/opt/rh/devtoolset-2/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --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.8.2-20140120/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.2-20140120/obj-x86_64-redhat-linux/cloog-install --with-mpc=/builddir/build/BUILD/gcc-4.8.2-20140120/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.8.2 20140120 (Red Hat 4.8.2-15) (GCC)

Thanks!

I have this issue on my Centos 7

checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in /home/Statistics/eggdrop-1.8': configure: error: no acceptable C compiler found in $PATH Seeconfig.log' for more details

nice work

suyuTech commented May 6, 2017

@stephenturner Thanks a lot! I upgraded gcc successfully follow your tips, but gcc go back to original version again when I log in the server using ssh again.

I did what stephenturner said:

$ cat /etc/centos-release
CentOS release 6.9 (Final)

$ sudo yum install centos-release-scl
$ sudo yum install devtoolset-3-toolchain
$ scl enable devtoolset-3 bash

$ gcc --version
gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)

but when I try to cmake my package it says

bash-4.1$ cmake ..
CMake Error at CMakeLists.txt:28 (message):
GCC version must be at least 4.6 (for sufficient C++11 support. You have
version 4.4.7

-- Configuring incomplete, errors occurred!

I tried running

scl enable devtoolset-3 'cmake ..'

same error.
What should I do?

Here is how I got mine working on RHEL 6.8

cd /etc/pki/rpm-gpg
wget http://linuxsoft.cern.ch/cern/scl/RPM-GPG-KEY-cern

cd /etc/yum.repos.d
wget http://linuxsoft.cern.ch/cern/scl/slc6-scl.repo

yum install -y devtoolset-3-gcc-c++

# switch to new gcc
source /opt/rh/devtoolset-3/enable
gcc -v
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment