User Tools

Site Tools


nix:gcc

GCC

GCC Versions that are already installed on CS infrastructure

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

Building GCC in your home directory

https://gcc.gnu.org/wiki/InstallingGCC

You will want to prepare a sandwich and a drink once we start compiling.

Requirements

  1. About 6.5G of scratch space.
  2. ~1G for the actual install. This means if you require a higher quota you will need to request this before proceeding.

You will want to use /var/tmp, /tmp, or /local as the place to checkout and build GCC.

Example

#!/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"

Troubleshooting

'module' command not found

To resolve you may have to do the following:

source /etc/profile.d/modules.sh
/var/lib/dokuwiki/data/pages/nix/gcc.txt · Last modified: 2018/04/23 12:01 by kauffman