Building: Difference between revisions

Jump to navigation Jump to search
856 bytes removed ,  15 February 2021
m
Remove edit test.
(→‎Uninstall: Overhaul section.)
m (Remove edit test.)
Tag: Undo
(17 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.</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 196: Line 203:
== Tweaks ==
== Tweaks ==


Installing in your home directory is a method to install GNU Octave next to your repository installation at the same time. This works with every Linux distribution and is especially for old Ubuntu LTS versions very useful!
=== Install Octave in home directory ===
 
One advantage is that you do not clutter your system by running ''sudo make install''.
Another advantage is that you can keep your Octave installation that is provided by your distribution.
 
=== Create a smart .bashrc entry ===
 
echo "alias octave38='~/.octave38/bin/octave'" >> ~/.bashrc
. ~/.bashrc # this will update your bashrc without doing logout and login!
 
If you simply enter ''octave'', you'll start your repository installation provided by your distribution. But when you enter ''octave38'', you'll start your new snappy octave version installed to your home directory.
 


=== Managing your own program hierarchy (optional) ===
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.


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:
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}}:


  ./configure --prefix=${HOME}/usr
  echo "alias myoctave='$HOME/my_octave/bin/octave'" >> ~/.bashrc


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:
Then update your {{Path|.bashrc}} without doing logout and login:


  # set LD_LIBRARY_PATH if not set
  source $HOME/.bashrc
  (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.
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 ===
=== Uninstall ===
Line 250: Line 223:


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 ===
: ''Main article: [[Enable large arrays: Build octave such that it can use arrays larger than 2Gb.]]''


== See also ==
== See also ==
Line 255: 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