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 == |