This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
nix:gcc [2016/04/22 14:15] kauffman [Requirements] |
nix:gcc [2021/01/20 12:25] kauffman |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== 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. | ||
+ | |||
+ | 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. | ||
+ | |||
+ | <code> | ||
+ | $ 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 | ||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | $ module load gcc/4.9.4 | ||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | $ 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 | ||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | $ gcc --version | ||
+ | gcc (GCC) 4.9.4 | ||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | $ module unload gcc | ||
+ | </code> | ||
+ | |||
+ | |||
===== Building GCC in your home directory ===== | ===== Building GCC in your home directory ===== | ||
https://gcc.gnu.org/wiki/InstallingGCC | https://gcc.gnu.org/wiki/InstallingGCC | ||
- | Strap in cause this will take a while. You will want to prepare a sandwich and a drink once we start compiling. | + | |
+ | You will want to prepare a sandwich and a drink once we start compiling. | ||
===== Requirements ===== | ===== Requirements ===== | ||
- About 6.5G of scratch space. | - About 6.5G of scratch space. | ||
- | - 1.5G for the actual install. This means if you require a higher quota you will need to request this before proceeding. | + | - ~1G for the actual install. This means if you require a higher [[ techstaff:quota|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. | You will want to use /var/tmp, /tmp, or /local as the place to checkout and build GCC. | ||
Line 14: | Line 54: | ||
#!/bin/bash | #!/bin/bash | ||
- | PREFIX=$HOME/usr/local/gcc/4.9.3 | + | gccversion='7.1.0' |
+ | PREFIX="$HOME/.local/gcc/${gccversion}" | ||
- | # Building gcc in $HOME | + | # Building gcc |
+ | gccversionuc="${gccversion//./_}" | ||
INSTALLDIR=/tmp/$USER | INSTALLDIR=/tmp/$USER | ||
Line 22: | Line 64: | ||
cd $INSTALLDIR | cd $INSTALLDIR | ||
- | svn co svn://gcc.gnu.org/svn/gcc/tags/gcc_4_9_3_release gcc-4.9.3 | + | svn co svn://gcc.gnu.org/svn/gcc/tags/gcc_${gccversionuc}_release gcc-${gccversion} |
- | cd gcc-4.9.3 | + | cd gcc-${gccversion} |
./contrib/download_prerequisites | ./contrib/download_prerequisites | ||
cd ../ | cd ../ | ||
mkdir objdir | mkdir objdir | ||
cd objdir | cd objdir | ||
- | $PWD/../gcc-4.9.3/configure \ | + | $PWD/../gcc-${gccversion}/configure \ |
--prefix=$PREFIX \ | --prefix=$PREFIX \ | ||
--enable-languages=c,c++,fortran,go \ | --enable-languages=c,c++,fortran,go \ | ||
Line 37: | Line 79: | ||
make install | make install | ||
- | export PATH=$PREFIX/bin:$PATH | + | # clean up |
- | export LD_LIBRARY_PATH=$PREFIX/lib:$LD_LIBRARY_PATH | + | 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 "You should add the following to your .bashrc" | ||
echo "to make the exports permanent" | echo "to make the exports permanent" | ||
- | echo " export PATH=$PREFIX/bin:${PATH}" | + | echo " export PATH=\$HOME/$PREFIX/bin:\$PATH" |
- | echo " export LD_LIBRARY_PATH=$PREFIX/lib:${LD_LIBRARY_PATH}" | + | echo " export LD_LIBRARY_PATH=\$HOME/$PREFIX/lib:\$LD_LIBRARY_PATH" |
+ | </code> | ||
+ | |||
+ | ===== Troubleshooting ===== | ||
+ | ==== 'module' command not found ==== | ||
+ | To resolve you may have to do the following: | ||
+ | <code> | ||
+ | source /etc/profile.d/modules.sh | ||
</code> | </code> |