Building: Difference between revisions

Jump to navigation Jump to search
1,193 bytes removed ,  17 September 2020
Overhaul head section.
(→‎Tweaks: Overhaul section.)
(Overhaul head section.)
(12 intermediate revisions by 4 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 ==
Line 5: Line 9:
# Install all [[#Dependencies|build dependencies]] (see below).
# Install all [[#Dependencies|build dependencies]] (see below).
# Getting the Octave sources ...
# Getting the Octave sources ...
#* ... from the development repository
#* ... from the development repository (requires also [https://www.mercurial-scm.org/ Mercurial])
<div style="margin-left:5em;">
<div style="margin-left:5em;">
  hg clone https://www.octave.org/hg/octave && \
  hg clone https://www.octave.org/hg/octave && \
Line 21: Line 25:
  mkdir .build                            && \
  mkdir .build                            && \
  cd    .build                            && \
  cd    .build                            && \
  ./../configure --prefix=$HOME/my_octave && \ <ref><code>--prefix</code> determines the installation location. See [[#Install Octave in home directory|Tweaks section]] for details.</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                              && \
Line 29: Line 33:
== 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 217: Line 224:
In any case, don't forget to remove any created ''alias'' entries in {{Path|~/.bashrc}}.
In any case, don't forget to remove any created ''alias'' entries in {{Path|~/.bashrc}}.


=== Large array support ===


=== Managing your own program hierarchy (optional) ===
: ''Main article: [[Enable large arrays: Build octave such that it can use arrays larger than 2Gb.]]''
 
If you intend to compile for yourself a lot of utilities, you may use a specific "usr" hierachy into your own dir (Linux from scratch way). Go back to step 2, and configure octave as:
 
./configure --prefix=${HOME}/usr
 
The other steps (make; make install) do not change. In order to use your own hierachy, you should set a few environment variables in your .profile:
 
  # set LD_LIBRARY_PATH if not set
  (echo $LD_LIBRARY_PATH | grep -q lib) || export LD_LIBRARY_PATH="/usr/local/lib:$HOME/usr/lib:$HOME/usr/local/lib"
  # set PATH so it includes user's private bin if it exists
  if [ -d "$HOME/bin" ] ; then
        (echo $PATH | grep -q $HOME/usr/bin) || export PATH="$HOME/bin:$HOME/usr/bin:$HOME/usr/local/bin:$PATH"
  fi
 
  # set MANPATH so it includes user's private bin if it exists
  if [ -d "$HOME/usr/share/man" ] ; then
    (echo $MANPATH | grep -q $HOME/usr/share/man) || export MANPATH="$HOME/usr/local/share/man:$HOME/usr/share/man:`manpath -q`"
  fi
 
  if [ -d "$HOME/usr/share/info" ]; then
    export INFOPATH="$INFOPATH:$HOME/usr/share/info"
  fi
 
  if [ -d "$HOME/usr/lib/python" ]; then
    (echo $PYTHONPATH | grep -q $HOME/usr/lib/python) || export PYTHONPATH="$HOME/usr/local/lib/python:$HOME/usr/lib/python"
  fi
 
  if [ -d "$HOME/usr/lib/pkgconfig" ]; then
    (echo $PKG_CONFIG_PATH | grep -q $HOME/usr/lib/pkgconfig) || export PKG_CONFIG_PATH="$HOME/usr/lib/pkgconfig"
  fi
 
This way, most ordinary commands like "man octave", "info octave", or launching octave itself, will first explore your own hierachy.


== See also ==
== See also ==
Line 257: Line 232:
* [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://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