Latest revision |
Your text |
Line 1: |
Line 1: |
| :''This article provides general information about '''building GNU Octave''' from source (on Unix-like systems).''
| | General information about building the Octave source for different operating systems. |
|
| |
|
| :*''If you just want to '''install GNU Octave''', see [[:Category:Installation]].''
| | We try to keep build instructions up to date in the source tree. Please clone using [http://mercurial.selenic.com/ Mercurial] or download it to see the README. |
| :*''For '''MS Windows''', read [[Building on Microsoft Windows]] and [[Windows Installer]].''
| |
| :*''For '''macOS''', read [[Octave for macOS]].''
| |
|
| |
|
| == General steps ==
| | There are also instructions in the [http://www.gnu.org/software/octave/doc/interpreter/Installation.html manual]. |
|
| |
|
| # Install all [[#Dependencies|build dependencies]] (see below).
| | There is a page for Debian/Ubuntu users [[here|Octave for Debian systems]]. |
| # Getting the Octave sources ...
| |
| ::(A) ... 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 && \
| |
| cd octave && \
| |
| ./bootstrap
| |
| </div>
| |
| ::(B) ... from a release
| |
| <div style="margin-left:5em;">
| |
| wget https://ftpmirror.gnu.org/octave/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 && \
| |
| cd .build && \
| |
| ./../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 check && \
| |
| make install
| |
| </div>
| |
|
| |
|
| == Dependencies ==
| | There is a page for ArchLinux users [http://wiki.octave.org/ArchLinux here]. |
|
| |
|
| Most of the dependencies given in this section can be very conveniently installed on many [[Octave for GNU/Linux|GNU/Linux]] systems.
| | ==Dependencies== |
|
| |
|
| {{Note|For a quick way to install the required dependencies, see: | | {| class"wikitable" |
| * [[Octave for Debian systems#The right way|Debian / Ubuntu]]
| | |- |
| * [[Octave for Arch Linux|Arch Linux]]
| | | Critical |
| * [[Octave for Red Hat Linux systems|Fedora / RedHat / CentOS]]}}
| | | style="background:red" | |
| | | |- |
| 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.
| | | Recommended |
| | | | style="background:yellow" | |
| === Build tools === | | |- |
| | | Not critical |
| | | style="background:green" | |
| | |} |
|
| |
|
| {| class="wikitable" | | {| class="wikitable" |
| |- | | |- |
| ! Dependency | | ! Task |
| ! Description | | ! Name |
| ! License / Copyright | | ! Usage |
| |-style="background:lightgreen"
| | ! Debian |
| | [https://www.gnu.org/software/autoconf Autoconf]
| | ! Level |
| | Software configuration | | |- |
| | GNU GPL v3.0
| | | rowspan="8"| Build tools |
| |-style="background:lightgreen" | | | C++, C, and Fortran compilers |
| | [https://www.gnu.org/software/automake Automake]
| |
| | Makefile generator
| |
| | GNU GPL v3.0 | |
| |-style="background:lightgreen"
| |
| | [https://gcc.gnu.org C++, C, and Fortran compilers] | |
| | Compiling the source code | | | Compiling the source code |
| | GNU GPL v3.0 | | | build-essential |
| |-style="background:lightgreen" | | | style="background:red" | |
| | [https://www.gnu.org/software/make GNU Make] | | |- |
| | | [http://www.gnu.org/software/make GNU Make] |
| | Makefile processor | | | Makefile processor |
| | GNU GPL v3.0 | | | make |
| |-style="background:lightgreen" | | | style="background:red" | |
| | [https://www.gnu.org/software/libtool Libtool]
| | |- |
| | Dependency of automake
| | | AWK, sed, and other Unix utilities |
| | Free Software Foundation | |
| |-style="background:lightgreen" | |
| | Unix utilities: gawk, gperf, less, ncurses | |
| | Miscellaneous tasks | | | Miscellaneous tasks |
| | GNU GPL v3.0 | | | awk, sed, ... |
| | | style="background:red" | |
| |- | | |- |
| | [https://www.gnu.org/software/bison Bison] | | | [http://www.gnu.org/software/bison Bison] |
| | Parser generator | | | Parser generator |
| | GNU GPL v3.0 | | | bison |
| | | style="background:green" | |
| |- | | |- |
| | [https://www.gnu.org/software/flex Flex] | | | [http://www.gnu.org/software/flex Flex] |
| | Lexical analyzer | | | Lexical analyzer |
| | The Flex project | | | flex |
| |} | | | style="background:green" | |
| | |
| === Documentation tools ===
| |
| | |
| {| class="wikitable"
| |
| |- | | |- |
| ! Dependency
| | | [http://www.gnu.org/software/autoconf Autoconf] |
| ! Description
| | | Software configuration |
| ! License / Copyright
| | | autoconf |
| | | style="background:red" | |
| |- | | |- |
| | [http://www.ghostgum.com.au/software/epstool.htm epstool] | | | [http://www.gnu.org/software/automake Automake] |
| | Epstool is a utility to create or extract preview images in EPS files, fix bounding boxes and convert to bitmaps. | | | Makefile generator |
| | GNU GPL v2.0 | | | automake |
| | | style="background:red" | |
| |- | | |- |
| | [https://www.freetype.org FTGL] | | | [http://www.gnu.org/software/libtool Libtool] |
| | Portable font engine to perform font rendering for Octave’s OpenGL-based graphics functions. | | | Dependency of automake |
| | GNU GPL v2.0 | | | libtool |
| | | style="background:red" | |
| |- | | |- |
| | [http://geuz.org/gl2ps GL2PS] | | | rowspan="19"| External tools |
| | GL2PS is a C library providing high quality vector output for any OpenGL application. | | | [http://www.netlib.org/blas BLAS] |
| | GNU LGPL v2.0 | | | Basic Linear Algebra Subroutine library |
| | | libatlas-base-dev |
| | | style="background:red" | |
| |- | | |- |
| | [https://www.nongnu.org/texi2html Texi2HTML] | | | [http://www.netlib.org/lapack LAPACK] |
| | Perl script which converts Texinfo source files to HTML output. | | | Linear Algebra Package |
| | GNU GPL v3.0 | | | liblapack-dev |
| | | style="background:red" | |
| |- | | |- |
| | [https://www.gnu.org/software/texinfo Texinfo] | | | [http://www.pcre.org PCRE] |
| | Documentation system that uses a single source to produce both on-line information and printed output. | | | Perl Compatible Regular Expression library |
| | GNU GPL v3.0
| | | libpcre3-dev |
| |-
| | | style="background:red" | |
| | [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
| |
| |} | |
| | |
| === External tools and libraries ===
| |
| | |
| {| class="wikitable"
| |
| |- | | |- |
| ! Dependency
| | | [http://www.gnu.org/s/readline GNU Readline] |
| ! Description
| |
| ! License / Copyright
| |
| |-style="background:lightgreen"
| |
| | [https://www.netlib.org/blas BLAS]
| |
| | Basic Linear Algebra Subroutine library
| |
| | Free - proper attribution request
| |
| |-style="background:lightgreen"
| |
| | [https://netlib.org/lapack LAPACK]
| |
| | Linear Algebra Package
| |
| | Free - proper attribution request
| |
| |-style="background:lightgreen"
| |
| | [https://www.pcre.org PCRE]
| |
| | Perl Compatible Regular Expression library
| |
| | Free
| |
| |-style="background:lightgreen"
| |
| | [https://www.gnu.org/software/readline GNU Readline] | |
| | Command-line editing library | | | Command-line editing library |
| | GNU GPL v3.0 | | | libreadline-dev |
| | | style="background:yellow" | |
| |- | | |- |
| | [https://github.com/opencollab/arpack-ng ARPACK-NG] | | | [http://forge.scilab.org/index.php/p/arpack-ng ARPACK] |
| | Solution of large-scale eigenvalue problems | | | Solution of large-scale eigenvalue problems |
| | BSD like - various authors | | | libarpack2-dev |
| | | style="background:red" | |
| |- | | |- |
| | [https://curl.haxx.se cURL] | | | [http://curl.haxx.se cURL] |
| | Library for transferring data with URL syntax | | | Library for transferring data with URL syntax |
| | Free Software -- main author | | | curl |
| | | style="background:red" | |
| |- | | |- |
| | [http://www.fftw.org FFTW3] | | | [http://www.fftw.org FFTW3] |
| | Library for computing discrete Fourier transforms | | | Library for computing discrete Fourier transforms |
| | MIT -- GNU GPL v2.0 | | | libfftw3-dev |
| | | style="background:red" | |
| |- | | |- |
| | [https://www.fltk.org FLTK] | | | [http://www.fltk.org FLTK] |
| | Portable GUI toolkit | | | Portable GUI toolkit |
| | GNU GPL v2.0 with static linking exception | | | libfltk1.3-dev |
| | | style="background:red" | |
| |- | | |- |
| | [https://www.freedesktop.org/wiki/Software/fontconfig fontconfig] | | | [http://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 | | | fontconfig |
| | | style="background:red" | |
| |- | | |- |
| | [https://www.freetype.org FreeType] | | | [http://www.freetype.org FreeType] |
| | Portable font engine | | | Portable font engine |
| | compatible with GNU GPL v3.0 | | | libfreetype6-dev |
| | | style="background:red" | |
| |- | | |- |
| | [https://www.geuz.org/gl2ps/ GL2PS] | | | [http://www.gnu.org/software/glpk GLPK] |
| | 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 | | | libglpk-dev |
| | | style="background:yellow" | |
| |- | | |- |
| | [http://www.gnuplot.info gnuplot] | | | [http://www.gnuplot.info gnuplot] |
| | Interactive graphics program | | | Interactive graphics program |
| | Provided "as is" -- various authors | | | gnuplot |
| | | style="background:red" | |
| |- | | |- |
| | Magick++, e.g. [http://www.graphicsmagick.org GraphicsMagick++] | | | [http://www.graphicsmagick.org GraphicsMagick++] |
| | Image processing library | | | Image processing library |
| | various -- integrates many third-party libs | | | libgraphicsmagick++1-dev |
| | | style="background:yellow" | |
| |- | | |- |
| | [https://www.hdfgroup.org/solutions/hdf5 HDF5] | | | [http://www.hdfgroup.org/HDF5 HDF5] |
| | Library for manipulating portable data files | | | Library for manipulating portable data files |
| | BSD - like | | | libhdf5-dev |
| | | style="background:yellow" | |
| |- | | |- |
| | JDK, e.g. [https://www.hdfgroup.org/solutions/hdf5 OpenJDK] | | | [http://www.opengl.org OpenGL] |
| | 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 | | | - |
| |- | | | style="background:red" | |
| | [http://www.portaudio.com/ PortAudio]
| |
| | Audio I/O library | |
| | Free software -- specific
| |
| |- | | |- |
| | [http://www.qhull.org Qhull] | | | [http://www.qhull.org Qhull] |
| | Computational geometry library | | | Computational geometry library |
| | Free software -- specific | | | libqhull-dev |
| | | style="background:yellow" | |
| |- | | |- |
| | [http://sourceforge.net/projects/qrupdate QRUPDATE] | | | [http://sourceforge.net/projects/qrupdate QRUPDATE] |
| | QR factorization updating library | | | QR factorization updating library |
| | GNU GPL v3.0 | | | libqrupdate-dev |
| |-
| | | style="background:yellow" | |
| | [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] | | | [http://www.cise.ufl.edu/research/sparse/SuiteSparse SuiteSparse] |
| | Sparse matrix factorization library | | | Sparse matrix factorization library |
| | Main author | | | libsuitesparse-dev |
| |-
| | | style="background:yellow" | |
| | [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] | | | [http://zlib.net zlib] |
| | Data compression library | | | Data compression library |
| | Provided "as is" -- various authors | | | zlib1g-dev |
| | | style="background:yellow" | |
| |} | | |} |
|
| |
| == 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 ==
| |
|
| |
| <references/>
| |
|
| |
|
| [[Category:Building]] | | [[Category:Building]] |