Building
- This article provides general information about building GNU Octave from source (on Unix-like systems).
- If you just want to install GNU Octave, see Category:Installation.
- For MS Windows, read Building on Microsoft Windows and Windows Installer.
- For macOS, read Octave for macOS.
General steps
- Install all build dependencies (see below).
- Getting the Octave sources ...
- (A) ... from the development repository (requires also Mercurial)
hg clone https://www.octave.org/hg/octave && \ cd octave && \ ./bootstrap
- (B) ... from a release
wget https://ftpmirror.gnu.org/octave/octave-9.3.0.tar.gz && \ tar -xzf octave-9.3.0.tar.gz && \ cd octave-9.3.0
- 3. Configure, build, check, and install Octave
mkdir .build && \ cd .build && \ ./../configure --prefix=$HOME/my_octave && \ [1] make -j2 && \ [2] make check && \ make install
Dependencies
Most of the dependencies given in this section can be very conveniently installed on many GNU/Linux systems.
Dependencies marked with green background are required for building Octave. All other tools and libraries are recommended/optional, but very useful features (like the GUI, plotting, etc.) are likely to be disabled.
Build tools
Dependency | Description | License / Copyright |
---|---|---|
Autoconf | Software configuration | GNU GPL v3.0 |
Automake | Makefile generator | GNU GPL v3.0 |
C++, C, and Fortran compilers | Compiling the source code | GNU GPL v3.0 |
GNU Make | Makefile processor | GNU GPL v3.0 |
Libtool | Dependency of automake | Free Software Foundation |
Unix utilities: gawk, gperf, less, ncurses | Miscellaneous tasks | GNU GPL v3.0 |
Bison | Parser generator | GNU GPL v3.0 |
Flex | Lexical analyzer | The Flex project |
Documentation tools
Dependency | Description | License / Copyright |
---|---|---|
epstool | Epstool is a utility to create or extract preview images in EPS files, fix bounding boxes and convert to bitmaps. | GNU GPL v2.0 |
FTGL | Portable font engine to perform font rendering for Octave’s OpenGL-based graphics functions. | GNU GPL v2.0 |
GL2PS | GL2PS is a C library providing high quality vector output for any OpenGL application. | GNU LGPL v2.0 |
Texi2HTML | Perl script which converts Texinfo source files to HTML output. | GNU GPL v3.0 |
Texinfo | Documentation system that uses a single source to produce both on-line information and printed output. | GNU GPL v3.0 |
TeX Live | TeX document production system including all the major TeX-related programs, macro packages, and fonts that are free software. | Freely redistributable as defined by the Free Software Foundation |
External tools and libraries
Dependency | Description | License / Copyright |
---|---|---|
BLAS | Basic Linear Algebra Subroutine library | Free - proper attribution request |
LAPACK | Linear Algebra Package | Free - proper attribution request |
PCRE | Perl Compatible Regular Expression library | Free |
GNU Readline | Command-line editing library | GNU GPL v3.0 |
ARPACK-NG | Solution of large-scale eigenvalue problems | BSD like - various authors |
cURL | Library for transferring data with URL syntax | Free Software -- main author |
FFTW3 | Library for computing discrete Fourier transforms | MIT -- GNU GPL v2.0 |
FLTK | Portable GUI toolkit | GNU GPL v2.0 with static linking exception |
fontconfig | Library for configuring and customizing font access | Provided "as is" -- various authors |
FreeType | Portable font engine | compatible with GNU GPL v3.0 |
GL2PS | OpenGL to PostScript printing library | GNU GPL v2.0 |
GLPK | GNU Linear Programming Kit | GNU GPL v3.0 |
gnuplot | Interactive graphics program | Provided "as is" -- various authors |
Magick++, e.g. GraphicsMagick++ | Image processing library | various -- integrates many third-party libs |
HDF5 | Library for manipulating portable data files | BSD - like |
JDK, e.g. OpenJDK | Java programming language compiler and libraries | GNU GPL v2.0 |
OpenGL | API for portable 2D and 3D graphics | Free specs -- license is driver dependent |
PortAudio | Audio I/O library | Free software -- specific |
Qhull | Computational geometry library | Free software -- specific |
QRUPDATE | QR factorization updating library | GNU GPL v3.0 |
QScintilla | Source code highlighter and manipulator; a Qt port of Scintilla | GNU GPL v3.0 |
Qt | Widget toolkit for creating graphical user interfaces | GNU LGPL v3.0 |
RapidJSON | A fast JSON parser/generator for C++ with both SAX/DOM style API | MIT license |
SuiteSparse | Sparse matrix factorization library | Main author |
SUNDIALS IDA | SUite of Nonlinear and DIfferential/ALgebraic equation Solvers - Initial value problems for Differential-Algebraic equation (DAE) systems | BSD 3-Clause |
zlib | Data compression library | Provided "as is" -- various authors |
Tweaks
Install Octave in home directory
To install multiple versions of GNU Octave on one system, it is recommended to use the --prefix
option of the configure
script. With this option one can determine a custom installation directory, preferably within your user's home directory, to avoid elevated installation privileges. One does not "clutter" the system by running sudo make install
and the custom build Octave can coexist with, for example, your Linux distribution installation of Octave.
In order to start the custom build of Octave almost as convenient as the Linux distribution installation of Octave, one can create an alias within .bashrc:
echo "alias myoctave='$HOME/my_octave/bin/octave'" >> ~/.bashrc
Then update your .bashrc without doing logout and login:
source $HOME/.bashrc
If you simply enter octave
, you'll start your Linux distribution installation of Octave. But when you enter myoctave
, you'll start your custom build of Octave inside your home directory.
Uninstall
- If you still have the .build folder, just run
make uninstall
from it. - Just delete the install folder, e.g.
rm -rf $HOME/my_octave
.
In any case, don't forget to remove any created alias entries in ~/.bashrc.
Large array support
See also
README
and/etc/HACKING.md
in the development repository.- https://octave.org/doc/interpreter/Installation.html
- MXE -- a more customized Octave build including many self-compiled tools.
Footnotes
- ↑
--prefix
determines the installation location, see the Tweaks section for details. For more information about configuration options, type./../configure --help
. - ↑ Depending on your system and processor count, use a larger number of parallel jobs, e.g.
-j8
.