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 [http://wiki.octave.org/Debian here]. |
| # 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 == | | ==Dependencies== |
| | |
| Most of the dependencies given in this section can be very conveniently installed on many [[Octave for GNU/Linux|GNU/Linux]] 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.
| |
| | |
| === Build tools ===
| |
|
| |
|
| {| class="wikitable" | | {| class="wikitable" |
| |- | | |- |
| ! Dependency | | ! Task |
| ! Description | | ! Name |
| ! License / Copyright | | ! Usage |
| |-style="background:lightgreen"
| | ! Debian |
| | [https://www.gnu.org/software/autoconf Autoconf]
| | ! Cygwin |
| | Software configuration
| |
| | GNU GPL v3.0
| |
| |-style="background:lightgreen"
| |
| | [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
| |
| | GNU GPL v3.0
| |
| |-style="background:lightgreen"
| |
| | [https://www.gnu.org/software/make GNU Make]
| |
| | Makefile processor
| |
| | GNU GPL v3.0
| |
| |-style="background:lightgreen"
| |
| | [https://www.gnu.org/software/libtool Libtool]
| |
| | Dependency of automake
| |
| | Free Software Foundation
| |
| |-style="background:lightgreen"
| |
| | Unix utilities: gawk, gperf, less, ncurses
| |
| | Miscellaneous tasks
| |
| | GNU GPL v3.0
| |
| |- | | |- |
| | [https://www.gnu.org/software/bison Bison] | | | rowspan="8"| Build tools |
| | Parser generator | | | C++, C, and Fortran compilers |
| | GNU GPL v3.0
| | | row 1, cell 3 |
| |-
| | | row 1, cell 3 |
| | [https://www.gnu.org/software/flex Flex]
| | | row 1, cell 3 |
| | Lexical analyzer | |
| | The Flex project | |
| |} | |
| | |
| === Documentation tools ===
| |
| | |
| {| class="wikitable"
| |
| |- | | |- |
| ! Dependency
| | | [GNU Make http://www.gnu.org/software/make] |
| ! Description
| | | row 2, cell 3 |
| ! License / Copyright
| | | row 1, cell 3 |
| | | row 1, cell 3 |
| |- | | |- |
| | [http://www.ghostgum.com.au/software/epstool.htm epstool] | | | row 2, cell 2 |
| | Epstool is a utility to create or extract preview images in EPS files, fix bounding boxes and convert to bitmaps. | | | row 2, cell 3 |
| | GNU GPL v2.0 | | | row 1, cell 3 |
| | | row 1, cell 3 |
| |- | | |- |
| | [https://www.freetype.org FTGL] | | | row 2, cell 2 |
| | Portable font engine to perform font rendering for Octave’s OpenGL-based graphics functions. | | | row 2, cell 3 |
| | GNU GPL v2.0 | | | row 1, cell 3 |
| | | row 1, cell 3 |
| |- | | |- |
| | [http://geuz.org/gl2ps GL2PS] | | | row 2, cell 2 |
| | GL2PS is a C library providing high quality vector output for any OpenGL application. | | | row 2, cell 3 |
| | GNU LGPL v2.0 | | | row 1, cell 3 |
| | | row 1, cell 3 |
| |- | | |- |
| | [https://www.nongnu.org/texi2html Texi2HTML] | | | row 2, cell 2 |
| | Perl script which converts Texinfo source files to HTML output. | | | row 2, cell 3 |
| | GNU GPL v3.0 | | | row 1, cell 3 |
| | | row 1, cell 3 |
| |- | | |- |
| | [https://www.gnu.org/software/texinfo Texinfo] | | | row 2, cell 2 |
| | Documentation system that uses a single source to produce both on-line information and printed output. | | | row 2, cell 3 |
| | GNU GPL v3.0 | | | row 1, cell 3 |
| | | row 1, cell 3 |
| |- | | |- |
| | [https://www.tug.org/texlive/ TeX Live] | | | row 2, cell 2 |
| | TeX document production system including all the major TeX-related programs, macro packages, and fonts that are free software. | | | row 2, cell 3 |
| | Freely redistributable as defined by the Free Software Foundation | | | row 1, cell 3 |
| | | row 1, cell 3 |
| |} | | |} |
|
| |
| === External tools and libraries ===
| |
|
| |
| {| class="wikitable"
| |
| |-
| |
| ! Dependency
| |
| ! 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
| |
| | GNU GPL v3.0
| |
| |-
| |
| | [https://github.com/opencollab/arpack-ng ARPACK-NG]
| |
| | Solution of large-scale eigenvalue problems
| |
| | BSD like - various authors
| |
| |-
| |
| | [https://curl.haxx.se cURL]
| |
| | Library for transferring data with URL syntax
| |
| | Free Software -- main author
| |
| |-
| |
| | [http://www.fftw.org FFTW3]
| |
| | Library for computing discrete Fourier transforms
| |
| | MIT -- GNU GPL v2.0
| |
| |-
| |
| | [https://www.fltk.org FLTK]
| |
| | Portable GUI toolkit
| |
| | GNU GPL v2.0 with static linking exception
| |
| |-
| |
| | [https://www.freedesktop.org/wiki/Software/fontconfig fontconfig]
| |
| | Library for configuring and customizing font access
| |
| | Provided "as is" -- various authors
| |
| |-
| |
| | [https://www.freetype.org FreeType]
| |
| | Portable font engine
| |
| | compatible with GNU GPL v3.0
| |
| |-
| |
| | [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 GPL v3.0
| |
| |-
| |
| | [http://www.gnuplot.info gnuplot]
| |
| | Interactive graphics program
| |
| | Provided "as is" -- various authors
| |
| |-
| |
| | Magick++, e.g. [http://www.graphicsmagick.org GraphicsMagick++]
| |
| | Image processing library
| |
| | various -- integrates many third-party libs
| |
| |-
| |
| | [https://www.hdfgroup.org/solutions/hdf5 HDF5]
| |
| | Library for manipulating portable data files
| |
| | BSD - like
| |
| |-
| |
| | 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
| |
| | Free specs -- license is driver dependent
| |
| |-
| |
| | [http://www.portaudio.com/ PortAudio]
| |
| | Audio I/O library
| |
| | Free software -- specific
| |
| |-
| |
| | [http://www.qhull.org Qhull]
| |
| | Computational geometry library
| |
| | Free software -- specific
| |
| |-
| |
| | [http://sourceforge.net/projects/qrupdate QRUPDATE]
| |
| | QR factorization updating library
| |
| | GNU GPL v3.0
| |
| |-
| |
| | [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
| |
| | Main author
| |
| |-
| |
| | [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
| |
| | 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 ==
| |
|
| |
| * [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]] |