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.
Here is a list of packages we install as of 2017-05-02:
gcc gcc-4.7-uofc-cs gcc-4.9-uofc-cs gcc-5 gcc-5-base:amd64 gcc-5-multilib gcc-5.4-uofc-cs gcc-6-base:amd64 gcc-6-base:i386 gcc-6.3-uofc-cs gcc-7.1-uofc-cs
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 /etc/environment-modules/modules: cmake/3.1.1 cmake/3.8.0 gcc/4.7.4 gcc/4.9.3 gcc/5.4.0 gcc/6.3.0 gcc/7.1.0 kauffman3@green:~$ module load gcc/4.7.4 kauffman3@green:~$ echo "$PATH | $INCLUDE | $LD_LIBRARY_PATH | $MANPATH" /usr/local/gcc/4.7.4/bin:/home/kauffman3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/puppetlabs/bin | /usr/local/gcc/4.7.4/include | /usr/local/gcc/4.7.4/lib | /usr/local/gcc/4.7.4/man:/usr/share/man kauffman3@green:~$ gcc --version gcc (GCC) 4.7.4 kauffman3@green:~$ module unload gcc/4.7.4 kauffman3@green:~$ gcc --version gcc (Ubuntu 4.9.4-2ubuntu1~14.04.1) 4.9.4
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 PREFIX="$HOME/.local/gcc/4.9.3" # Building gcc in $HOME INSTALLDIR=/tmp/$USER mkdir -p $INSTALLDIR cd $INSTALLDIR svn co svn://gcc.gnu.org/svn/gcc/tags/gcc_4_9_3_release gcc-4.9.3 cd gcc-4.9.3 ./contrib/download_prerequisites cd ../ mkdir objdir cd objdir $PWD/../gcc-4.9.3/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"