The following external packages are required:
Basic Linear Algebra Subroutine library. Accelerated BLAS libraries such as OpenBLAS (https://www.openblas.net/) or ATLAS (http://math-atlas.sourceforge.net) are recommended for best performance. The reference implementation (http://www.netlib.org/blas) is slow and suffers from certain bugs in corner case inputs.
Linear Algebra Package (http://www.netlib.org/lapack).
The Perl Compatible Regular Expression library (https://www.pcre.org).
The following external package is optional but strongly recommended:
Command-line editing library (https://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. Octave can be built without them but certain features might be missing:
Library for the solution of large-scale eigenvalue problems
(https://forge.scilab.org/index.php/p/arpack-ng). ARPACK is
required to provide the functions eigs
and svds
.
Library for transferring data with URL syntax
(https://curl.haxx.se). cURL is required to provide the
urlread
and urlwrite
functions and the ftp
class.
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.)
Portable GUI toolkit (http://www.fltk.org). FLTK can be used to provide windows for Octave’s OpenGL-based graphics functions.
Library for configuring and customizing font access (https://www.freedesktop.org/wiki/Software/fontconfig). Fontconfig is used to manage fonts for Octave’s OpenGL-based graphics functions.
Portable font engine (https://www.freetype.org). FreeType is used to perform font rendering for Octave’s OpenGL-based graphics functions.
GNU Linear Programming Kit (https://www.gnu.org/software/glpk).
GPLK is required for the function glpk
.
OpenGL to PostScript printing library (https://www.geuz.org/gl2ps/). gl2ps is required for printing when using OpenGL-based graphics toolkits (currently either FLTK or Qt).
Interactive graphics program (http://www.gnuplot.info). gnuplot can be used as a graphics renderer for Octave; prior to Octave 4.0, gnuplot was the default graphics renderer.
Image processing library (http://www.graphicsmagick.org).
GraphicsMagick++ is used to provide the imread
and imwrite
functions.
Library for manipulating portable data files
(https://www.hdfgroup.org/HDF5). HDF5 is required for Octave’s
load
and save
commands to read and write HDF data files.
Java programming language compiler and libraries. The OpenJDK free software implementation is recommended (http://openjdk.java.net/), although other JDK implementations may work. Java is required to be able to call Java functions from within Octave.
API for portable 2-D and 3-D graphics (https://www.opengl.org). An
OpenGL implementation can be used to provide a renderer for Octave’s
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. Since Octave 4.0, the default graphics
renderer ("qt"
) has been OpenGL-based.
PortAudio (http://www.portaudio.com/) provides a very simple API
for recording and/or playing sound using a simple callback function or
a blocking read/write interface. It is required for the audio processing
functions audioplayer
, audiorecorder
, and
audiodevinfo
.
Computational geometry library (http://www.qhull.org). Qhull is
required to provide the functions convhull
, convhulln
,
delaunay
, delaunayn
, voronoi
, and voronoin
.
QR factorization updating library
(https://sourceforge.net/projects/qrupdate). QRUPDATE is used to
provide improved performance for the functions qrdelete
,
qrinsert
, qrshift
, and qrupdate
.
Source code highlighter and manipulator; a Qt port of Scintilla (http://www.riverbankcomputing.co.uk/software/qscintilla). QScintilla is used for syntax highlighting and code completion in the GUI.
GUI and utility libraries (https://www.qt.io). Qt is required for
building the GUI. It is a large framework, but the only components
required are the GUI, core, and network modules. Since Octave 4.0, the
default graphics renderer ("qt"
) has been Qt-based, which has
been OpenGL-based.
A fast JSON parser/generator for C++ with both SAX/DOM style API
(https://rapidjson.org/). RapidJSON is required to read or write
from or to JSON files with the functions jsondecode
and
jsonencode
.
Sparse matrix factorization library (http://faculty.cse.tamu.edu/davis/suitesparse.html). SuiteSparse is required to provide sparse matrix factorizations and solution of linear equations for sparse systems.
The SUite of Nonlinear and DIfferential/ALgebraic Equation Solvers
(https://computation.llnl.gov/projects/sundials) is required for
the Ordinary Differential Equations (ODE) solvers ode15i
and
ode15s
.
Data compression library (https://zlib.net). The zlib library is
required for Octave’s load
and save
commands to handle
compressed data, including MATLAB v5 MAT files.