Octave Wiki | RecentChanges

BuildFromSource

Difference (from prior major revision) (minor diff, author diff)

Changed: 3,7c3,37

< ## GNU Make
< ## GCC version 3.2+ (preferred --- you can
also compile with 2.95,
< and with some vendor specific ISO compliant compilers.) gcc
version
< 3.3 (and *not* 3.4) is required for Cygwin - see both Octave and Cygwin
< mailing lists for discussion.

to

> ==== Compilers ====
> * C
> * C++ (ISO)
> * Fortran
> The [http://gcc.gnu.org
GNU Compiler Collection] (preferably a 4.x version, though later 3.x versions may also work) should work fine.
> ==== Tools ====
> * autoconf
> * automake
> * GNU sed
> * GNU awk
> * GNU make
> * nm
> * flex
> * bison
> * less
> * gperf (if building from scratch)
> * perl (also if building from scratch) or python
> * gnuplot
> * texinfo
> * ghostscript
> * a TeX distribution
> ==== Libraries ====
> * readline
> * ncurses
> * zlib
> * A
version of BLAS and LAPACK, e.g. Atlas
> * fftw
> * glpk
> * SuiteSparse (without metis due to licensing issues): UMFPACK - AMD - CAMD - COLAMD - CCOLAMD - CHOLMOD - CXSPARSE
> * arpack (new GPL-conformant version)
> * qrupdate
> * hdf5
> * pcre
> * curl
> * qhull

Changed: 11,12c41,42

< The download page also contains CVS instructions. If you are using the
< cvs source, be sure to type the following command before configuring:

to

> The download page also contains instructions to download the development sources.
> If you are using the development sources, be sure to type the following command before configuring:


Build octave from source

Requirements

Compilers

The [GNU Compiler Collection] (preferably a 4.x version, though later 3.x versions may also work) should work fine.

Tools

Libraries

Download

Released source tarballs are available at http://www.octave.org/download.html. You will normally want to use one of those.

The download page also contains instructions to download the development sources. If you are using the development sources, be sure to type the following command before configuring:

	./autogen.sh

This builds the configure scripts that Octave uses. This requires a number of tools which are not needed if you download an octave release, such as recent versions of autoconf/automake, and tools such as bison, flex, gperf, perl, and maybe others.

Configure

Octave has many configure options. For a complete list, see

	./configure --help

By default octave compiles as a static binary which cannot be extended with separately compiled C, C++, or Fortran functions such as those provided with OctaveForge (you might get an error like "ld: fatal: relocations remain against allocatable but non-writable sections" when compiling OctaveForge). For that you will need to configure octave with

	./configure --enable-shared --disable-static

The --disable-static option is not necessary, but it will make your compile faster.

If you are building a personal version, you will want to install it into your home directory, or perhaps a subdirectory. Add the following to your configure line:

	--prefix=$HOME/octave

Be sure the $HOME/octave/bin is on your path, or symlink the binaries therein to $HOME/bin.

Troubleshooting

1. If you just type ./configure, you may get this error:

 configure: WARNING: in order to build octave, you must have a compatible
 configure: WARNING: Fortran compiler or f2c installed and in your path.
 configure: error: See the file INSTALL for more information.

This means that you don't have a fortran compiler on your system. You can either install a fortran compiler or re-install gcc with its optional build-in fortran compiler g77. To do this you must download the g77 components of gcc before you build gcc. Alternatively there are various f2c programs you could install which convert fortran to C.

2. If you get this warning:

 configure: WARNING: "FTGL headers not found. Native renderer will not have on-screen text"
 configure: WARNING:
 configure: WARNING: I didn't find the necessary libraries to compile native
 configure: WARNING: graphics. It isn't necessary to have native graphics
 configure: WARNING: but you will have to use gnuplot or you won't be able
 configure: WARNING: to use any of Octave's plotting commands

It may help to call configure with CPPFLAGS=-I/usr/include/freetype2, please see [Problems with FTGL building octave-3.1.51],[Building ftgl backend with current tip]. Note that from [changeset 8269] onward, this workaround should no longer be needed, please see [No FTGL, says configure script?]

Build

	make

Troubleshooting 2. Another possible error occurs at the 'make' stage:

	/usr/include/c++/3.3.1/bits/basic_string.h:228: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_empty_rep_storage'
	collect2: ld returned 1 exit status
	make[2]: *** [octave] Error 1

This has something to do with the gcc configuration. Try compiling the following program using g++:

  #include <string>
  #include <iostream>
  using namespace std;
  int main (void)
  {
    basic_string <char>a = "thing one";
    string b = "thing two";
    cout << a.c_str() << endl;
    return (a == b);
  }

If it fails, then your compiler needs to be set-up differently (how?). On my machine I can compile that test program but still get the error making Octave -- how do we solve this? It has something to do with the shared C++ library versions, check for /usr/lib/libstdc++.so.6 and make sure the right version of that library is being used by gcc -- especially if you had to reinstall gcc to build the fortrain support. If it still doesn't work, consider installing from the RPMs instead fo source!

Test

To run all tests, change to the octave directory and type

	make check

This requires dejagnu.

To run a specific set of tests, change to the directory test/octave.test/<part> and type

	runtest <part>.exp

To run your own tests use the RunInPlace shell script.

Install

	make install

System Specific Instructions

Distributed building

Requirements

    1. distcc
    2. ccache

Install distcc on all machines taking part in the compilation. List them in ~/.distcc/hosts:

 localhost
 pc1.mynet.org
 pc2.mynet.org

The first machines listed are given higher priority -- place 'localhost' as you see fit.

Set the environment variables CCACHE_PREFIX, CXX and CC:

 export CCACHE_PREFIX="distcc"
 export CXX="ccache g++"
 export CC="ccache gcc"
 ./configure <options>

Compile using the -j<simultaneous-jobs> flag, two jobs per CPU available, i.e. for 5 machines

  make -j10

CategoryInstall