This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
guide:compiling_octave [2011/12/06 08:59] hamish [Prerequisite] |
guide:compiling_octave [2021/12/09 16:42] (current) |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Compiling Octave from Source ====== | + | ====== Compiling Octave |
| - | This guide is written as to try and help CHPC users who are struggling to compile the Octave version required for their codes. | + | This guide is written for the Sun Tsessbe Cluster. The reader is advise to read through the INSTALL file located in the Octave Source |
| + | export LD_LIBRARY_PATH=$HOME/ | ||
| + | export LD_LIBRARY_PATH=$HOME/ | ||
| + | export PATH=$HOME/ | ||
| + | export LDFLAGS=" | ||
| + | export CPPFLAGS=" | ||
| + | export CXXFLAGS=$CPPFLAGS | ||
| + | export F77=gfortran | ||
| - | Before you begin, make sure your bash environmental variable are set correctly, for [[quick: | + | log out and in again, |
| + | $ gcc --version | ||
| + | gcc (GCC) 4.6.2 | ||
| + | | ||
| - | Also note that for this guide, all binary and libraries are installed home directory, i.e prefix=$HOME. My setup | + | |
| - | $ export PATH=/ | + | ===== Prerequisites |
| - | $ export LD_LIBRARY_PATH=/ | + | |
| - | $ export LD_LIBRARY_PATH=/ | + | |
| - | $ gcc --version | + | |
| - | gcc (GCC) 4.3.4 | + | |
| - | | + | |
| - | ===== Prerequisite | + | |
| Before you build Octave, you some libraries need to be built | Before you build Octave, you some libraries need to be built | ||
| Line 25: | Line 29: | ||
| Setup make, | Setup make, | ||
| $ cp make.inc.example make.inc | $ cp make.inc.example make.inc | ||
| + | $ emacs make.inc | ||
| + | # change | ||
| + | # OPTS = -O2 and, NOOPT = -O0 | ||
| + | # to | ||
| + | # OPTS = -O2 -fPIC and, NOOPT = -O0 -fPIC | ||
| + | # save (crtl-x crtl-s) and exit (crtl-x ctrl-c) | ||
| $ make | $ make | ||
| Make BLAS | Make BLAS | ||
| Line 43: | Line 53: | ||
| | | ||
| --> ALL PRECISIONS 3180834 268 (0.008%) 0 (0.000%) | --> ALL PRECISIONS 3180834 268 (0.008%) 0 (0.000%) | ||
| - | | ||
| - | Copy Library your lib directory | ||
| - | $cp lib* $HOME/lib | ||
| - | |||
| For more information visit [[ http:// | For more information visit [[ http:// | ||
| - | === libtool | + | === PCRE - Perl Compatible Regular Expressions |
| + | |||
| + | From the [[http:// | ||
| + | |||
| + | === FFTW === | ||
| + | |||
| + | Refer to [[guide: | ||
| + | |||
| + | === binutils and libtools (optional) === | ||
| + | |||
| + | binutils | ||
| + | $ wget http:// | ||
| + | $ tar -xf binutils-2.22.tar.bz2 | ||
| + | $ cd binutils-2.22 | ||
| + | $ mkdir BUILD | ||
| + | $ cd BUILD | ||
| + | $ ../ | ||
| + | $ make | ||
| + | $ make -k check | ||
| + | # If all the tests are passed, install into you home directory | ||
| + | $ make install | ||
| + | libtools | ||
| $ wget http:// | $ wget http:// | ||
| $ tar -xf libtool-2.4.2.tar.gz | $ tar -xf libtool-2.4.2.tar.gz | ||
| Line 60: | Line 87: | ||
| $ make | $ make | ||
| $ make -k check | $ make -k check | ||
| - | If all the tests are passed, install into you home directory | + | # If all the tests are passed, install into you home directory |
| $ make install | $ make install | ||
| - | | + | |
| - | The tool is required, as if the default ld is used error of the following | + | If you have not already add the following |
| + | export PATH=$HOME/ | ||
| + | then logout and login again, you should see | ||
| + | $ ld -v | ||
| + | GNU ld (GNU Binutils) 2.22 | ||
| - | === UMFPACK === | + | === UMFPACK |
| " | " | ||
| $#still to be done | $#still to be done | ||
| - | === FFTW === | ||
| - | "FFTW is a C subroutine library for computing the discrete Fourier transform (DFT)" [[http:// | ||
| - | $ cd ~/scratch | ||
| - | $ wget http:// | ||
| - | $ tar -xf fftw-3.3.tar.gz | ||
| - | $ cd fftw-3.3 | ||
| - | $ mkdir BUILD | ||
| - | $ cd BUILD | ||
| - | $ export F77=gfortran | ||
| - | $ ../ | ||
| - | $ make | ||
| - | $ make check #test it | ||
| - | $ make install #only if all tests are passed | ||
| | | ||
| | | ||
| Line 91: | Line 109: | ||
| Since the ftp is blocked on the Tsessbe login node, make use of an http mirror to download octave. | Since the ftp is blocked on the Tsessbe login node, make use of an http mirror to download octave. | ||
| $ cd ~/ | $ cd ~/ | ||
| - | $ wget http:// | + | $ wget http:// |
| - | $ tar -xf octave-3.4.0.tar.bz2 | + | $ tar -xf octave-3.4.3.tar.bz2 |
| | | ||
| ===== Configuration ===== | ===== Configuration ===== | ||
| - | At the time this guide was written, the f77 compiler was broken [?]: | + | $ cd ~/ |
| - | $ f77 --help | + | |
| - | / | + | |
| - | Try `/ | + | |
| - | | + | |
| - | / | + | |
| - | / | + | |
| - | + | ||
| - | So gfortran will be used in its place, | + | |
| - | $ cd ~/ | + | |
| $ mkdir BUILD | $ mkdir BUILD | ||
| $ cd BUILD | $ cd BUILD | ||
| - | $ export F77=gfortran | + | $ ../ |
| - | $ ../ | + | |
| - | $ ../configure --prefix=$HOME --without-fftw3 --without-fftw3f --without-umfpack --enable-static | + | |
| - | + | ||
| - | Options explained | + | |
| - | * --- prefix=$HOME, | + | |
| - | * ---without-fftw3 --without-fftw3f, | + | |
| - | + | ||
| - | / | + | |
| - | / | + | |
| - | + | ||
| - | * --without-umfpack (is the UMFPACK library available? | + | |
| After configuration is complete, alot of warning about missing librarys are given | After configuration is complete, alot of warning about missing librarys are given | ||
| Line 131: | Line 129: | ||
| * g++: Internal error: Killed (program cc1plus) | * g++: Internal error: Killed (program cc1plus) | ||
| wait a while and then make again, as the process was killed by the usage limiter which runs on the login node. If nessary try the approach shown in [[guide: | wait a while and then make again, as the process was killed by the usage limiter which runs on the login node. If nessary try the approach shown in [[guide: | ||
| + | |||
| + | ===== Check ===== | ||
| + | |||
| + | $ make check | ||
| + | |||
| + | notable failures are | ||
| + | scripts/ | ||
| + | scripts/ | ||
| + | PASS | ||
| + | |||
| + | Summary: | ||
| + | |||
| + | PASS 6829 | ||
| + | FAIL 11 | ||
| + | |||
| + | |||
| + | ===== Install ===== | ||
| + | |||
| + | $ make install | ||
| + | | ||
| + | Add the following to the end of your .bashrc file | ||
| + | |||
| + | # for Octave 3.4.3 installed in $HOME | ||
| + | export LD_LIBRARY_PATH=$HOME/ | ||
| + | | ||
| + | Log in and out, then | ||
| + | $ octave --version | ||
| + | GNU Octave, version 3.4.3 | ||
| + | Copyright (C) 2011 John W. Eaton and others. | ||