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.
- http://superuser.com/a/676337/88393: Forum response on using CERN's open Scientific Linux distribution of RHEL's developer toolset.
- http://linux.web.cern.ch/linux/devtoolset/: CERN's developer toolset installation instructions.
- https://github.com/Homebrew/linuxbrew/wiki/Standalone-Installation: Instructions for a standalone installation of Homebrew.
- https://twitter.com/sjackman: Shaun Jackman -- the hero who maintains Linuxbrew.
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
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
@tegansnyder I followed your instruction. When executing
yum install -y devtoolset-3-gcc-c++
, I got the following error:Loaded plugins: refresh-packagekit, security, ulninfo
Setting up Install Process
slc6-scl | 2.6 kB 00:00
slc6-scl/primary_db | 1.0 MB 00:02
http://people.centos.org/tru/devtools-2/6Server/x86_64/RPMS/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: testing-devtools-2-centos-6Server. Please verify its path and try again
My centos is
Red Hat Enterprise Linux Server release 6.9 (Santiago)
. my gcc isgcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
.I am a novice to Linux.
Could you help me to solve this error?