CLN, a Class Library for Numbers - 2 Installation

Go to the first, previous, next, last section, table of contents.

# 2 Installation

This section describes how to install the CLN package on your system.

## 2.1 Prerequisites

### 2.1.1 C++ compiler

To build CLN, you need a C++ compiler. Actually, you need GNU `g++ 2.7.0` or newer. On HPPA, you need GNU `g++ 2.8.0` or newer.

The following C++ features are used: classes, member functions, overloading of functions and operators, constructors and destructors, inline, const, multiple inheritance, templates.

The following C++ features are not used: `new`, `delete`, virtual inheritance, exceptions.

CLN relies on semi-automatic ordering of initializations of static and global variables, a feature which I could implement for GNU g++ only.

### 2.1.2 Make utility

To build CLN, you also need to have GNU `make` installed.

## 2.2 Building the library

As with any autoconfiguring GNU software, installation is as easy as this:

    $ ./configure
    $ make
    $ make check

If on your system, ``make'` is not GNU `make`, you have to use ``gmake'` instead of ``make'` above.

The `configure` command checks out some features of your system and C++ compiler and builds the `Makefile`s. The `make` command builds the library. This step may take 4 hours on an average workstation. The `make check` runs some test to check that no important subroutine has been miscompiled.

The `configure` command accepts options. To get a summary of them, try

    $ ./configure --help

Some of the options are explained in detail in the ``INSTALL.generic'` file.

You can specify the C compiler, the C++ compiler and their options through the following environment variables when running `configure`:

`CC`
  Specifies the C compiler.
`CFLAGS`
  Flags to be given to the C compiler when compiling programs (not when linking).
`CXX`
  Specifies the C++ compiler.
`CXXFLAGS`
  Flags to be given to the C++ compiler when compiling programs (not when linking).

Examples:

    $ CC="gcc" CFLAGS="-O" CXX="g++" CXXFLAGS="-O" ./configure
    $ CC="gcc -V 2.7.0" CFLAGS="-O -g" \
      CXX="g++ -V 2.7.0" CXXFLAGS="-O -g" ./configure
    $ CC="gcc -V 2.8.0" CFLAGS="-O" \
      CXX="g++ -V 2.8.0" CXXFLAGS="-O -fno-exceptions" ./configure

Note that for these environment variables to take effect, you have to set them (assuming a Bourne-compatible shell) on the same line as the `configure` command. If you made the settings in earlier shell commands, you have to `export` the environment variables before calling `configure`. In a `csh` shell, you have to use the ``setenv'` command for setting each of the environment variables.

On Linux, `g++` needs 15 MB to compile the tests. So you should better have 17 MB swap space and 1 MB room in $TMPDIR.

If you use `g++` version 2.7.x, don't add ``-O2'` to the CXXFLAGS, because ``g++ -O'` generates better code for CLN than ``g++ -O2'`.

If you use `g++` version 2.8.x, I recommend adding ``-fno-exceptions'` to the CXXFLAGS. This will likely generate better code.

## 2.3 Installing the library

As with any autoconfiguring GNU software, installation is as easy as this:

    $ make install

The ``make install'` command installs the library and the include files into public places (``/usr/local/lib/'` and ``/usr/local/include/'`, if you haven't specified a `--prefix` option to `configure`). This step may require superuser privileges.

If you have already built the library and wish to install it, but didn't specify `--prefix=...` at configure time, just re-run `configure`, giving it the same options as the first time, plus the `--prefix=...` option.

## 2.4 Cleaning up

You can remove system-dependent files generated by `make` through

    $ make clean

You can remove all files generated by `make`, thus reverting to a virgin distribution of CLN, through

    $ make distclean

Go to the first, previous, next, last section, table of contents.