User Tools

Site Tools


guide:compiling_octave

This is an old revision of the document!


Compiling Octave 3.4.3 from Source (UNDER CONSTRUCTION)

This guide is written for the Sun Tsessbe Cluster. The reader is advise to read through the INSTALL file located in the Octave Source Folder before proceeding with this guide. 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. If you have not installed GCC a version of GCC in your home directory, do

$ 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

Otherwise, make sure the following is at the end of your .bashrc file

$ export LD_LIBRARY_PATH=$HOME/lib:$LD_LIBRARY_PATH
$ export LD_LIBRARY_PATH=$HOME/lib64:$LD_LIBRARY_PATH
$ export PATH=$HOME/bin:$PATH
$  gcc --version
gcc (GCC) 4.6.2

Prerequisite

Before you build Octave, you some libraries need to be built

LAPACK and BLAS

Download the LAPACK source and extract, setup make and build as follows,

$ cd ~/scratch
$ wget http://www.netlib.org/lapack/lapack-3.4.0.tgz
$ tar -xf lapack-3.4.0.tgz
$ cd lapack-3.4.0

Setup make,

$ 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 BLAS

$ cd BLAS/SRC
$ make

Make LAPACK

$ cd ../../
$ make

Which should give you test results such as

  			-->   LAPACK TESTING SUMMARY  <--
		Processing LAPACK Testing output found in the TESTING direcory
SUMMARY             	nb test run 	numerical error   	other error  
================   	===========	=================	================  
REAL             	1070421		38	(0.004%)	0	(0.000%)	
DOUBLE PRECISION	1052315		204	(0.019%)	0	(0.000%)	
COMPLEX          	508588		2	(0.000%)	0	(0.000%)	
COMPLEX16         	549510		24	(0.004%)	0	(0.000%)	

--> ALL PRECISIONS	3180834		268	(0.008%)	0	(0.000%)

For more information visit Quick Installation Guide for LAPACK on Unix Systems

PCRE - Perl Compatible Regular Expressions

From the PCRE website, follow the link source forge to download the appropriate source file. Extract, go into directory, make BUILD directory, enter build directory. ../configure with home prefix. make. make check. make install. If $HOME/lib is not in your LD_LIBRARY_PATH, add it via export or in your .bashrc file.

FFTW (optional) FIX ME, still get linking errors when compiling octave

“FFTW is a C subroutine library for computing the discrete Fourier transform (DFT)” FFTW Homepage

$ cd ~/scratch
$ wget http://www.fftw.org/fftw-3.3.tar.gz
$ tar -xf fftw-3.3.tar.gz
$ cd fftw-3.3
$ mkdir BUILD
$ cd BUILD
$ export F77=gfortran
$ export FFLAGS=-fPIC
$ ../configure --prefix=$HOME
$ make
$ make check #test it
$ make install #only if all tests are passed

binutils and libtools (optional)

binutils

$ wget http://www.mirrorservice.org/sites/ftp.gnu.org/gnu/binutils/binutils-2.22.tar.bz2
$ tar -xf binutils-2.22.tar.bz2
$ cd binutils-2.22
$ mkdir BUILD
$ cd BUILD
$ ../configure --prefix=$HOME
$ make
$ make -k check
# If all the tests are passed, install into you home directory
$ make install

libtools

$ wget http://www.mirrorservice.org/sites/ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz
$ tar -xf libtool-2.4.2.tar.gz
$ cd libtool-2.4.2.tar.gz
$ mkdir BUILD
$ cd BUILD
$ ../configure --prefix=$HOME
$ make 
$ make -k check
# If all the tests are passed, install into you home directory
$ make install

The tool is required, as if the default ld is used error of the following nature occur during the octave build

$ /usr/bin/ld: /usr/local/lib/libfftw3f.a(apiplan.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC

use a later version of ld should hopefully avoid this error…

If you have not already add the following line in your .bashrc file

export PATH=$HOME/bin:$PATH

then logout and login again, you should see

$ ld -v
GNU ld (GNU Binutils) 2.22

UMFPACK (optional)

“UMFPACK is a set of routines for solving unsymmetric sparse linear systems, Ax=b, using the Unsymmetric MultiFrontal method.” UMFPACK. See Compiling UMFPACK

$#still to be done

Download Source

Since the ftp is blocked on the Tsessbe login node, make use of an http mirror to download octave.

$ cd ~/scratch 
$ wget http://www.mirrorservice.org/sites/ftp.gnu.org/gnu/octave/octave-3.4.3.tar.bz2
$ tar -xf octave-3.4.3.tar.bz2

Configuration

 $ cd ~/scratch/octave-3.4.3
 $ mkdir BUILD
 $ cd BUILD
 $ ../configure --prefix=$HOME --with-blas=$HOME/scratch/lapack-3.4.0/librefblas.a --with-lapack=$HOME/scratch/lapack-3.4.0/liblapack.a --enable-static --disable-dynamic  --disable-docs
 $ cp ../AUTHORS ./ #this is a bug in the configuration script...

Possible error

  • if error regarding fftw3f or fftw3 are encounter, either use the '–without-fftw3f –without-fftw3' flags in configure, or compile fftw3 as done the compiling Octave 3.2.4 guide.

After configuration is complete, alot of warning about missing librarys are given

Build

 $ make
 

If errors occur such as

  • 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 Compiling GCC from Source.

Check

$ make check

notable failures are

scripts/linear-algebra/onenormest.m .................... PASS    3/4    FAIL 1
scripts/optimization/sqp.m ............................. ** On entry to DORGLQ parameter number  5 had an illegal value 
  PASS   16/17   FAIL 1

Summary:

PASS   6829
FAIL     11
/app/dokuwiki/data/attic/guide/compiling_octave.1323257598.txt.gz · Last modified: 2021/12/09 16:42 (external edit)