This is an old revision of the document!
Usually, we install multiple versions. The default version of GCC probably won't be changed system wide… ever.
We are now taking more advantage of environment modules. This means depending on when you read this you could load the version of GCC you want to use.
kauffman3@green:~$ module --terse avail |grep gcc /etc/environment-modules/modules: gcc/4.9.4 gcc/5.5.0 gcc/6.5.0 gcc/7.5.0 gcc/8.4.0 gcc/9.3.0 gcc/10.2.0 kauffman3@green:~$ module load gcc/4.9.4 kauffman3@green:~$ echo "$PATH | $INCLUDE | $LD_LIBRARY_PATH | $MANPATH" /usr/local/gcc/4.9.4/bin:/home/kauffman3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/puppetlabs/bin | /usr/local/gcc/4.9.4/include | /usr/local/gcc/4.9.4/lib | /usr/local/gcc/4.9.4/man:/usr/share/man kauffman3@green:~$ gcc --version gcc (GCC) 4.9.4 kauffman3@green:~$ module unload gcc
https://gcc.gnu.org/wiki/InstallingGCC
You will want to prepare a sandwich and a drink once we start compiling.
You will want to use /var/tmp, /tmp, or /local as the place to checkout and build GCC.
#!/bin/bash gccversion='7.1.0' PREFIX="$HOME/.local/gcc/${gccversion}" # Building gcc gccversionuc="${gccversion//./_}" INSTALLDIR=/tmp/$USER mkdir -p $INSTALLDIR cd $INSTALLDIR svn co svn://gcc.gnu.org/svn/gcc/tags/gcc_${gccversionuc}_release gcc-${gccversion} cd gcc-${gccversion} ./contrib/download_prerequisites cd ../ mkdir objdir cd objdir $PWD/../gcc-${gccversion}/configure \ --prefix=$PREFIX \ --enable-languages=c,c++,fortran,go \ --enable-shared \ --enable-multiarch \ --enable-threads=posix make -j4 make install # clean up rm -r $INSTALLDIR/objdir export PATH=$HOME/$PREFIX/bin:$PATH export LD_LIBRARY_PATH=$HOME/$PREFIX/lib:$LD_LIBRARY_PATH echo "You should add the following to your .bashrc" echo "to make the exports permanent" echo " export PATH=\$HOME/$PREFIX/bin:\$PATH" echo " export LD_LIBRARY_PATH=\$HOME/$PREFIX/lib:\$LD_LIBRARY_PATH"
To resolve you may have to do the following:
source /etc/profile.d/modules.sh