G.1 Build Dependencies
Octave is a fairly large program with many build dependencies. You may
be able to find pre-packaged versions of the dependencies distributed as
part of your system, or you may have to build some or all of them
yourself.
The following tools are required:
- C++, C, and Fortran compilers
- The Octave sources are primarily written in C++, but some portions are
also written in C and Fortran. The Octave sources are intended to be
portable. Recent versions of the GNU compiler collection (GCC) should
work (http://gcc.gnu.org). If you use GCC, you should avoid
mixing versions. For example, be sure that you are not using the
obsolete
g77
Fortran compiler with modern versions of gcc
and g++
.
- GNU Make
- Tool for building software (http://www.gnu.org/software/make).
Octave's build system requires GNU Make. Other versions of Make will
not work. Fortunately, GNU Make is highly portable and easy to install.
- AWK, sed, and other Unix utilities
- Basic Unix system utilities are required for building Octave. All will
be available with any modern Unix system and also on Windows with either
Cygwin or MinGW and MSYS.
Additionally, the following tools may be needed:
- Bison
- Parser generator (http://www.gnu.org/software/bison).
You will need Bison if you modify the
oct-parse.yy
source file or
if you delete the files that are generated from it.
- Flex
- Lexer analyzer (http://www.gnu.org/software/flex). You will need
Flex if you modify the
lex.ll
source file or if you delete the
files that are generated from it.
- Autoconf
- Package for software configuration
(http://www.gnu.org/software/autoconf). Autoconf is required if
you modify Octave's
configure.ac
file or other files that it
requires.
- Automake
- Package for Makefile generation
(http://www.gnu.org/software/automake). Automake is required if
you modify Octave's
Makefile.am
files or other files that they
depend on.
- Libtool
- Package for building software libraries
(http://www.gnu.org/software/libtool). Libtool is required by
Automake.
The following external packages are required:
- PCRE
- The Perl Compatible Reular Expression library (http://www.pcre.org).
- BLAS
- Basic Linear Algebra Subroutine library
(http://www.netlib.org/blas). Accelerated BLAS libraries such as
ATLAS (http://math-atlas.sourceforge.net) are recommeded for
better performance.
- LAPACK
- Linear Algebra Package (http://www.netlib.org/lapack).
The following external package is optional but strongly recommended:
- GNU Readline
- Command-line editing library (www.gnu.org/s/readline).
If you wish to build Octave without GNU readline installed, you must use
the --disable-readline
option when running the configure script.
The following external software packages are optional but recommended:
- ARPACK
- Library for the solution of large-scale eigenvalue problems
(http://forge.scilab.org/index.php/p/arpack-ng). ARPACK is
required to provide the functions
eigs
and svds
.
- cURL
- Library for transferring data with URL syntax
(http://curl.haxx.se). cURL is required to provide the
urlread
and urlwrite
functions and the ftp
class.
- FFTW3
- Library for computing discrete Fourier transforms
(http://www.fftw.org). FFTW3 is used to provide better
performance for functions that compute discrete Fourier transforms
(
fft
, ifft
, fft2
, etc.)
- FLTK
- Portable GUI toolkit (http://www.fltk.org). FLTK is currently
used to provide windows for Octave's OpenGL-based graphics functions.
- fontconfig
- Library for configuring and customizing font access
(http://www.freedesktop.org/wiki/Software/fontconfig). Fontconfig
is used to manage fonts for Octave's OpenGL-based graphics functions.
- FreeType
- Portable font engine (http://www.freetype.org). FreeType is used
to peform font rendering Octave's OpenGL-based graphics functions.
- GLPK
- GNU Linear Programming Kit (http://www.gnu.org/software/glpk).
GPLK is required for the function
glpk
.
- gnuplot
- Interactive graphics program (http://www.gnuplot.info). gnuplot
is currently the default graphics renderer for Octave.
- GraphicsMagick++
- Image processing library (http://www.graphicsmagick.org).
GraphicsMagick++ is used to provide the
imread
and imwrite
functions.
- HDF5
- Library for manipulating portable data files
(http://www.hdfgroup.org/HDF5). HDF5 is required for Octave's
save
and load
commands to write and read HDF data files.
- OpenGL
- API for portable 2D and 3D graphics (http://www.opengl.org). An
OpenGL implementation is required to provide Octave's OpenGL-based
graphics functions. Octave's OpenGL-based graphics functions usually
outperform the gnuplot-based graphics functions because plot data can be
rendered directly instead of sending data and commands to gnuplot for
interpretation and rendering.
- Qhull
- Computational geometry library (http://www.qhull.org). Qhull is
required to provide the functions
convhull
, convhulln
,
delaunay
, delaunay3
, delaunayn
, voronoi
, and
voronoin
.
- QRUPDATE
- QR factorization updating library
(http://sourceforge.net/projects/qrupdate). QRUPDATE is used to
provide improved performance for the functions
qrdelete
,
qrinsert
, qrshift
, and qrupdate
.
- SuiteSparse
- Sparse matrix factorization library
(http://www.cise.ufl.edu/research/sparse/SuiteSparse).
SuiteSparse is required to provide sparse matrix factorizations and
solution of linear equations for sparse systems.
- zlib
- Data compression library (http://zlib.net). The zlib library is
required for Octave's
load
and save
commands to handle
compressed data, including Matlab v5 MAT files.