Building: Difference between revisions

Jump to navigation Jump to search
2,747 bytes added ,  16 March 2022
m
(More description.)
 
(28 intermediate revisions by 6 users not shown)
Line 1: Line 1:
: '' This article provides general information about building GNU Octave from source.''
:''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 ==


{| class="wikitable"
# Install all [[#Dependencies|build dependencies]] (see below).
! Build from the development repository
# Getting the Octave sources ...
! Build from a release
::(A) ... from the development repository (requires also [https://www.mercurial-scm.org/ Mercurial])
|-
<div style="margin-left:5em;">
| colspan="2" style="text-align: center;" | Install all [[#Dependencies|build dependencies]] (see below).
|-style="vertical-align:top;"
|
  hg clone https://www.octave.org/hg/octave && \
  hg clone https://www.octave.org/hg/octave && \
  cd octave                                  && \
  cd octave                                  && \
  ./bootstrap
  ./bootstrap
|
</div>
::(B) ... 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                               && \
|-style="vertical-align:top;"
cd octave-{{Release}}
| colspan="2" |
</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 ==
== Dependencies ==


Most of the dependencies given in this section can be very conveniently installed on many [[Octave for GNU/Linux|GNU/Linux]] systems.  Please read the respective wiki page for your distribution on the [[Octave for GNU/Linux]] page.
Most of the dependencies given in this section can be very conveniently installed on many [[Octave for GNU/Linux|GNU/Linux]] systems.


On [[Octave for Microsoft Windows|MS Windows]] and [[Octave for macOS|macOS]] systems the generic Octave build process described on this page needs some more effort to fulfill the described build dependencies.  Please read [[Octave for Microsoft Windows]] and [[Octave for macOS]] for information how to build Octave for the respective 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 106: Line 114:
| TeX document production system including all the major TeX-related programs, macro packages, and fonts that are free software.
| 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
|-
| [https://www.ctan.org/pkg/transfig transfig]
| Tans­lates fig­ures gen­er­ated by xfig to a large va­ri­ety of for­mats.
| BSD Style Li­cense
|}
|}


Line 120: Line 124:
! License / Copyright
! License / Copyright
|-style="background:lightgreen"
|-style="background:lightgreen"
| [http://www.netlib.org/blas BLAS]
| [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"
| [http://www.netlib.org/lapack LAPACK]
| [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"
| [http://www.pcre.org PCRE]
| [https://www.pcre.org PCRE]
| Perl Compatible Regular Expression library
| Perl Compatible Regular Expression library
| Free
| Free
|-style="background:lightgreen"
|-style="background:lightgreen"
| [http://www.gnu.org/s/readline GNU Readline]
| [https://www.gnu.org/software/readline GNU Readline]
| Command-line editing library
| Command-line editing library
| GNU GPL v3.0
| GNU GPL v3.0
|-
|-
| [http://forge.scilab.org/index.php/p/arpack-ng ARPACK]
| [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
|-
|-
| [http://curl.haxx.se cURL]
| [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 148: Line 152:
| MIT -- GNU GPL v2.0
| MIT -- GNU GPL v2.0
|-
|-
| [http://www.fltk.org FLTK]
| [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
|-
|-
| [http://www.freedesktop.org/wiki/Software/fontconfig fontconfig]
| [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
|-
|-
| [http://www.freetype.org FreeType]
| [https://www.freetype.org FreeType]
| Portable font engine
| Portable font engine
| compatible with GNU GPL v3.0
| compatible with GNU GPL v3.0
|-
|-
| [http://www.gnu.org/software/glpk GLPK]
| [https://www.geuz.org/gl2ps/ GL2PS]
| OpenGL to PostScript printing library
| GNU GPL v2.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 168: Line 176:
| Provided "as is" -- various authors
| Provided "as is" -- various authors
|-
|-
| [http://www.graphicsmagick.org GraphicsMagick++]
| Magick++, e.g. [http://www.graphicsmagick.org GraphicsMagick++]
| Image processing library
| Image processing library
| various -- integrates many third-party libs
| various -- integrates many third-party libs
|-
|-
| [http://www.hdfgroup.org/HDF5 HDF5]
| [https://www.hdfgroup.org/solutions/hdf5 HDF5]
| Library for manipulating portable data files
| Library for manipulating portable data files
| BSD - like
| BSD - like
|-
|-
| [http://www.opengl.org OpenGL]
| JDK, e.g. [https://www.hdfgroup.org/solutions/hdf5 OpenJDK]
| Java programming language compiler and libraries
| GNU GPL v2.0
|-
| [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
|-
| [http://www.portaudio.com/ PortAudio]
| Audio I/O library
| Free software -- specific
|-
|-
| [http://www.qhull.org Qhull]
| [http://www.qhull.org Qhull]
Line 188: Line 204:
| GNU GPL v3.0
| GNU GPL v3.0
|-
|-
| [http://www.cise.ufl.edu/research/sparse/SuiteSparse SuiteSparse]
| [https://riverbankcomputing.com/software/qscintilla QScintilla]
| Source code highlighter and manipulator; a Qt port of Scintilla
| GNU GPL v3.0
|-
| [https://www.qt.io/ Qt]
| Widget toolkit for creating graphical user interfaces
| GNU LGPL v3.0
|-
| [https://rapidjson.org/ RapidJSON]
| A fast JSON parser/generator for C++ with both SAX/DOM style API
| MIT license
|-
| [http://faculty.cse.tamu.edu/davis/suitesparse.html SuiteSparse]
| Sparse matrix factorization library
| Sparse matrix factorization library
| Main author
| Main author
|-
|-
| [http://zlib.net zlib]
| [https://computing.llnl.gov/projects/sundials/ida SUNDIALS IDA]
| SUite of Nonlinear and DIfferential/ALgebraic equation Solvers - Initial value problems for Differential-Algebraic equation (DAE) systems
| BSD 3-Clause
|-
| [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 ==
== See also ==


* [https://hg.savannah.gnu.org/hgweb/octave/file/3490ea06aba1/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://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
* https://octave.org/doc/interpreter/Installation.html
* [[MXE]] -- a more customized Octave build including many self-compiled tools.


== Footnotes ==
== Footnotes ==

Navigation menu