1,848
edits
m (→Build tools: Sort list.) |
(Overhaul head section.) |
||
(26 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
:''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 == | == General steps == | ||
# Install all [[#Dependencies|build dependencies]] (see below). | |||
# Getting the Octave sources ... | |||
#* ... from the development repository (requires also [https://www.mercurial-scm.org/ Mercurial]) | |||
<div style="margin-left:5em;"> | |||
hg clone https://www.octave.org/hg/octave && \ | hg clone https://www.octave.org/hg/octave && \ | ||
cd octave && \ | cd octave && \ | ||
./bootstrap | ./bootstrap | ||
</div> | |||
::* ... from a release | |||
<div style="margin-left:5em;"> | |||
wget https://ftpmirror.gnu.org/octave/octave-{{Release}}.tar.gz && \ | wget https://ftpmirror.gnu.org/octave/octave-{{Release}}.tar.gz && \ | ||
tar -xzf octave-{{Release}}.tar.gz | tar -xzf octave-{{Release}}.tar.gz && \ | ||
cd octave-{{Release}} | |||
</div> | |||
: 3. Configure, build, check, and install Octave | |||
<div style="margin-left:3em;"> | |||
mkdir .build && \ | mkdir .build && \ | ||
cd .build && \ | cd .build && \ | ||
./../configure --prefix=$HOME/my_octave && \ <ref><code>--prefix</code> determines the installation location.</ref> | ./../configure --prefix=$HOME/my_octave && \ <ref><code>--prefix</code> determines the installation location, see the [[#Install Octave in home directory|Tweaks section]] for details. For more information about configuration options, type <code>./../configure --help</code>.</ref> | ||
make -j2 && \ <ref>Depending on your system and processor count, use a larger number of parallel jobs, e.g. <code>-j8</code>.</ref> | make -j2 && \ <ref>Depending on your system and processor count, use a larger number of parallel jobs, e.g. <code>-j8</code>.</ref> | ||
make check && \ | make check && \ | ||
make install | make install | ||
</div> | |||
== Dependencies == | |||
Most of the dependencies given in this section can be very conveniently installed on many [[Octave for GNU/Linux|GNU/Linux]] systems. | |||
{{Note|For a quick way to install the required dependencies, see: | |||
* [[Octave for Debian systems#The right way|Debian / Ubuntu]] | |||
* [[Octave for Arch Linux|Arch Linux]] | |||
* [[Octave for Red Hat Linux systems|Fedora / RedHat / CentOS]]}} | |||
Dependencies marked with <span style="background:lightgreen">green background</span> 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. | Dependencies marked with <span style="background:lightgreen">green background</span> 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. | ||
Line 52: | Line 50: | ||
! License / Copyright | ! License / Copyright | ||
|-style="background:lightgreen" | |-style="background:lightgreen" | ||
| [ | | [https://www.gnu.org/software/autoconf Autoconf] | ||
| Software configuration | | Software configuration | ||
| GNU GPL v3.0 | | GNU GPL v3.0 | ||
|-style="background:lightgreen" | |-style="background:lightgreen" | ||
| [ | | [https://www.gnu.org/software/automake Automake] | ||
| Makefile generator | | Makefile generator | ||
| GNU GPL v3.0 | | GNU GPL v3.0 | ||
|-style="background:lightgreen" | |-style="background:lightgreen" | ||
| [ | | [https://gcc.gnu.org C++, C, and Fortran compilers] | ||
| Compiling the source code | | Compiling the source code | ||
| GNU GPL v3.0 | | GNU GPL v3.0 | ||
|-style="background:lightgreen" | |-style="background:lightgreen" | ||
| [ | | [https://www.gnu.org/software/make GNU Make] | ||
| Makefile processor | | Makefile processor | ||
| GNU GPL v3.0 | | GNU GPL v3.0 | ||
|-style="background:lightgreen" | |-style="background:lightgreen" | ||
| [ | | [https://www.gnu.org/software/libtool Libtool] | ||
| Dependency of automake | | Dependency of automake | ||
| Free Software Foundation | | Free Software Foundation | ||
Line 76: | Line 74: | ||
| GNU GPL v3.0 | | GNU GPL v3.0 | ||
|- | |- | ||
| [ | | [https://www.gnu.org/software/bison Bison] | ||
| Parser generator | | Parser generator | ||
| GNU GPL v3.0 | | GNU GPL v3.0 | ||
|- | |- | ||
| [ | | [https://www.gnu.org/software/flex Flex] | ||
| Lexical analyzer | | Lexical analyzer | ||
| The Flex project | | The Flex project | ||
Line 93: | Line 91: | ||
! License / Copyright | ! License / Copyright | ||
|- | |- | ||
| [http:// | | [http://www.ghostgum.com.au/software/epstool.htm epstool] | ||
| Epstool is a utility to create or extract preview images in EPS files, fix bounding boxes and convert to bitmaps. | | Epstool is a utility to create or extract preview images in EPS files, fix bounding boxes and convert to bitmaps. | ||
| GNU GPL v2.0 | | GNU GPL v2.0 | ||
|- | |- | ||
| [ | | [https://www.freetype.org FTGL] | ||
| | | Portable font engine to perform font rendering for Octave’s OpenGL-based graphics functions. | ||
| | | GNU GPL v2.0 | ||
|- | |- | ||
| [http://geuz.org/gl2ps | | [http://geuz.org/gl2ps GL2PS] | ||
| GL2PS is a C library providing high quality vector output for any OpenGL application. | | GL2PS is a C library providing high quality vector output for any OpenGL application. | ||
| GNU LGPL v2.0 | | GNU LGPL v2.0 | ||
|- | |- | ||
| [ | | [https://www.nongnu.org/texi2html Texi2HTML] | ||
| Perl script which converts Texinfo source files to HTML output. | | Perl script which converts Texinfo source files to HTML output. | ||
| GNU GPL v3.0 | | GNU GPL v3.0 | ||
|- | |- | ||
| [https://www.gnu.org/software/texinfo | | [https://www.gnu.org/software/texinfo Texinfo] | ||
| Documentation system that uses a single source to produce both on-line information and printed output. | | Documentation system that uses a single source to produce both on-line information and printed output. | ||
| GNU GPL v3.0 | | GNU GPL v3.0 | ||
|- | |- | ||
| [https://www.tug.org/texlive/ TeX Live] | | [https://www.tug.org/texlive/ 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 | | Freely redistributable as defined by the Free Software Foundation | ||
|} | |} | ||
Line 138: | Line 124: | ||
! License / Copyright | ! License / Copyright | ||
|-style="background:lightgreen" | |-style="background:lightgreen" | ||
| [ | | [https://www.netlib.org/blas BLAS] | ||
| Basic Linear Algebra Subroutine library | | Basic Linear Algebra Subroutine library | ||
| Free - proper attribution request | | Free - proper attribution request | ||
|-style="background:lightgreen" | |-style="background:lightgreen" | ||
| [ | | [https://netlib.org/lapack LAPACK] | ||
| Linear Algebra Package | | Linear Algebra Package | ||
| Free - proper attribution request | | Free - proper attribution request | ||
|-style="background:lightgreen" | |-style="background:lightgreen" | ||
| [ | | [https://www.pcre.org PCRE] | ||
| Perl Compatible Regular Expression library | | Perl Compatible Regular Expression library | ||
| Free | | Free | ||
|-style="background:lightgreen" | |-style="background:lightgreen" | ||
| [ | | [https://www.gnu.org/software/readline GNU Readline] | ||
| Command-line editing library | | Command-line editing library | ||
| GNU GPL v3.0 | | GNU GPL v3.0 | ||
|- | |- | ||
| [ | | [https://github.com/opencollab/arpack-ng ARPACK-NG] | ||
| Solution of large-scale eigenvalue problems | | Solution of large-scale eigenvalue problems | ||
| BSD like - various authors | | BSD like - various authors | ||
|- | |- | ||
| [ | | [https://curl.haxx.se cURL] | ||
| Library for transferring data with URL syntax | | Library for transferring data with URL syntax | ||
| Free Software -- main author | | Free Software -- main author | ||
Line 166: | Line 152: | ||
| MIT -- GNU GPL v2.0 | | MIT -- GNU GPL v2.0 | ||
|- | |- | ||
| [ | | [https://www.fltk.org FLTK] | ||
| Portable GUI toolkit | | Portable GUI toolkit | ||
| GNU GPL v2.0 with static linking exception | | GNU GPL v2.0 with static linking exception | ||
|- | |- | ||
| [ | | [https://www.freedesktop.org/wiki/Software/fontconfig fontconfig] | ||
| Library for configuring and customizing font access | | Library for configuring and customizing font access | ||
| Provided "as is" -- various authors | | Provided "as is" -- various authors | ||
|- | |- | ||
| [ | | [https://www.freetype.org FreeType] | ||
| Portable font engine | | Portable font engine | ||
| compatible with GNU GPL v3.0 | | compatible with GNU GPL v3.0 | ||
|- | |- | ||
| [ | | [https://www.gnu.org/software/glpk GLPK] | ||
| GNU Linear Programming Kit | | GNU Linear Programming Kit | ||
| GNU GPL v3.0 | | GNU GPL v3.0 | ||
Line 190: | Line 176: | ||
| various -- integrates many third-party libs | | various -- integrates many third-party libs | ||
|- | |- | ||
| [ | | [https://www.hdfgroup.org/solutions/hdf5 HDF5] | ||
| Library for manipulating portable data files | | Library for manipulating portable data files | ||
| BSD - like | | BSD - like | ||
|- | |- | ||
| [ | | [https://www.opengl.org OpenGL] | ||
| API for portable 2D and 3D graphics | | API for portable 2D and 3D graphics | ||
| Free specs -- license is driver dependent | | Free specs -- license is driver dependent | ||
Line 206: | Line 192: | ||
| GNU GPL v3.0 | | GNU GPL v3.0 | ||
|- | |- | ||
| [http:// | | [http://faculty.cse.tamu.edu/davis/suitesparse.html SuiteSparse] | ||
| Sparse matrix factorization library | | Sparse matrix factorization library | ||
| Main author | | Main author | ||
|- | |- | ||
| [ | | [https://zlib.net zlib] | ||
| Data compression library | | Data compression library | ||
| Provided "as is" -- various authors | | 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 <code>--prefix</code> option of the <code>configure</code> 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 <code>sudo make install</code> 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 {{Path|.bashrc}}: | |||
echo "alias myoctave='$HOME/my_octave/bin/octave'" >> ~/.bashrc | |||
Then update your {{Path|.bashrc}} without doing logout and login: | |||
source $HOME/.bashrc | |||
If you simply enter <code>octave</code>, you'll start your Linux distribution installation of Octave. But when you enter <code>myoctave</code>, you'll start your custom build of Octave inside your home directory. | |||
=== Uninstall === | |||
# If you still have the {{Path|.build}} folder, just run <code>make uninstall</code> from it. | |||
# Just delete the install folder, e.g. <code>rm -rf $HOME/my_octave</code>. | |||
In any case, don't forget to remove any created ''alias'' entries in {{Path|~/.bashrc}}. | |||
=== Large array support === | |||
: ''Main article: [[Enable large arrays: Build octave such that it can use arrays larger than 2Gb.]]'' | |||
== See also == | |||
* [https://hg.savannah.gnu.org/hgweb/octave/file/tip/README <code>README</code>] and [https://hg.savannah.gnu.org/hgweb/octave/file/tip/etc/HACKING.md <code>/etc/HACKING.md</code>] in the development repository. | |||
* https://octave.org/doc/interpreter/Installation.html | |||
* [[MXE]] -- a more customized Octave build including many self-compiled tools. | |||
== Footnotes == | == Footnotes == |