The following external packages are required:

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

- LAPACK
Linear Algebra Package (http://www.netlib.org/lapack).

- PCRE
The Perl Compatible Regular Expression library (https://www.pcre.org).

The following external package is optional but strongly recommended:

- GNU Readline
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:

- ARPACK
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`

.- cURL
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.- 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 can be used to provide windows for Octave’s OpenGL-based graphics functions.

- fontconfig
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.

- FreeType
Portable font engine (https://www.freetype.org). FreeType is used to perform font rendering for Octave’s OpenGL-based graphics functions.

- GLPK
GNU Linear Programming Kit (https://www.gnu.org/software/glpk). GPLK is required for the function

`glpk`

.- gl2ps
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).

- gnuplot
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.

- 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 (https://www.hdfgroup.org/HDF5). HDF5 is required for Octave’s

`load`

and`save`

commands to read and write HDF data files.- Java Development Kit
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.

- OpenGL
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
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`

.- Qhull
Computational geometry library (http://www.qhull.org). Qhull is required to provide the functions

`convhull`

,`convhulln`

,`delaunay`

,`delaunayn`

,`voronoi`

, and`voronoin`

.- QRUPDATE
QR factorization updating library (https://sourceforge.net/projects/qrupdate). QRUPDATE is used to provide improved performance for the functions

`qrdelete`

,`qrinsert`

,`qrshift`

, and`qrupdate`

.- QScintilla
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.

- Qt
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.- RapidJSON
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`

.- SuiteSparse
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.

- SUNDIALS
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`

.- zlib
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.