This is an old revision of the document!
This guide is written as to try and help CHPC users who are struggling to compile the GCC version required for there codes. For the official guide on compiling GCC please visit the GCC website. This guide documents how gcc-4.6.2 would be built on the Sun Tsessbe Cluster.
Before you begin, make sure your bash environmental variable are set correctly, for example . Also it recommended that you make you use of temporary or scratch directory to do all the compilation in (i.e. ~/scratch or /tmp/$USER), as to save disk space in your home directory.
Also note that for this guide, all binary and libraries are installed home directory, i.e prefix=$HOME. My setup
$ export PATH=/opt/gridware/gcc-4.3/bin:$PATH $ export LD_LIBRARY_PATH=/opt/gridware/gcc-4.3/lib/:$LD_LIBRARY_PATH $ export LD_LIBRARY_PATH=/opt/gridware/gcc-4.3/lib64/:$LD_LIBRARY_PATH $ gcc --version gcc (GCC) 4.3.4
A table showing what tools and package for building GCC, and what is available on the cluster login node (this is where GCC will be built)
| Prerequisite | Version Required (or later) | Available |
|---|---|---|
| ISO C90 compiler | GCC binary version 2.95 | gcc 4.3.4 |
| GNAT | ? | ? |
| A “working” POSIX compatible shell, or GNU bash | bash available | |
| awk | GNU awk version 3.1.5 | GNU awk version 3.1.5 |
| GNU binutils | ? | |
| gzip | 1.2.4 | 1.3.5 |
| gzip2 | 1.0.2 | 1.0.3 |
| GNU tar | 1.14 | 1.15.1 |
| Perl | 5.6.1 | 5.8.8 |
| jar, or InfoZIP | ? | |
| GMP Library | 4.3.2 | 4.1.3 |
| MPFR Library | 2.4.2 | No |
| MPC Library | 0.8.1 | No |
So the GMP, MPFR and MPC support libraries need to build before install gcc. Also note from http://gcc.gnu.org/install/prerequisites.html “While any sufficiently new version of required tools usually work, library requirements are generally stricter. Newer versions may work in some cases, but it's safer to use the exact versions documented”
Download the GMP source code
$ cd ~/scratch #or cd /tmp/$USER if luster is misbehaving .. $ wget http://ftp.gnu.org/gnu/gmp/gmp-4.2.4.tar.bz2 $ tar -xf gmp-4.2.4.tar.bz2
Configure GMP
$ cd gmp-4.2.4 $ mkdir BUILD $ cd BUILD $ ../configure --prefix=$HOME
Build, if this process is interrupted try run make again
$ make
Test it!
$ make check
If all the test are passed (no critical error is thrown for `make check'), install GMP
$ make install
Download the MPFR source code
$ cd ~/scratch #or cd /tmp/$USER if luster is misbehaving .. $ wget http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.gz $ tar -xf mpfr-2.4.2.tar.gz
Configure MPFR
$ cd mpfr-2.4.2 $ mkdir BUILD $ cd BUILD $ ../configure --with-gmp=$HOME --prefix=$HOME
NB make sure you see `checking if gmp.h version and libgmp version are the same… (4.2.4/4.2.4) yes'. If you do not, its possible your GMP installation failed.
Build it,
$ make
Test,
$ make check
If all the test are passed, install
$ make install
Download the MPC source code
$ cd ~/scratch #or cd /tmp/$USER if luster is misbehaving .. $ wget http://www.multiprecision.org/mpc/download/mpc-0.8.1.tar.gz $ tar -xf mpc-0.8.1.tar.gz
Configure GMP
$ cd mpc-0.8.1/ $ mkdir BUILD $ cd BUILD $ ../configure --with-gmp=$HOME --with-mpfr=$HOME --prefix=$HOME
Build and test
$ make $ make check
If all the tests are passed
$ make install
Now that the Prerequisites are ready, GCC can be downloaded (i use an http mirror as the ftp mirrors seem to be blocked?). Download GCC
$ cd ~/scratch #or cd /tmp/$USER $ wget http://www.mirrorservice.org/sites/ftp.gnu.org/gnu/gcc/gcc-4.6.2/gcc-4.6.2.tar.bz2 $ tar -xf gcc-4.6.2.tar.bz2
$ cd gcc-4.6.2/ $ mkdir BUILD $ cd BUILD $ ../configure --with-gmp=$HOME --with-mpfr=$HOME --with-mpc=$HOME --prefix=$HOME
Once the configuration is complete, use Make to build GCC
$make
The compilation process may be unstable, requiring make to be run multiple times. If you experience such errors try inside the build directory
$ screen $ for i in `seq 1 25` ; do echo MAKE CALL $i ; make ; sleep 6 ; done >> make.out 2>&1 ; echo MAKE CALLS FINISHED >> make.out # detach screen using ctrl-D $ tail -f make.out
The benefit about this screen approach is that if ssh connection is lost or you close terminal, the job will keep going.
This error occurs when the cc1 process is killed/terminated. There could be many reasons for termination, not enough system recourses, another process killed cc1 (try killall cc1 from another shell, while make is running to replicate this error…)
This is a rather annoying error, but just keep running make until all the file are compiled.
Again just as with xgcc error, the gcj program was killed/terminated. run make again
Before testing the GCC build, dejaGNU needs to be installed
$ cd ~/scratch $ wget http://download.polytechnic.edu.na/pub/ftp.gnu.org/gnu/dejagnu/dejagnu-1.5.tar.gz $ tar -xf dejagnu-1.5.tar.gz $ cd dejagnu-1.5/ $ mkdir BUILD #do not build from src directory! $ cd BUILD $ ../configure --prefix=$HOME $ make $ make check # ensure that all test are passed before installation $ make install
Then sit back for couple of hours while the testing is done, again i used screen so the test wont be interrupted in the event of a lost connection
$ cd ~/scratch/gcc-4.6.2/BUILD $ screen $ make -k check > make.check 2>&1 # detach screen using Ctrl-D $ tail -f make.check