# Installation instructions for NEST 2.10 and earlier¶

Note

These instructions contain only information on points that differ from current versions of NEST. See the installation page for details.

The following are the basic steps to compile and install NEST from source code:

• Unpack the tarball:

tar -xzvf nest-simulator-x.y.z.tar.gz

• Create a build directory:

mkdir nest-simulator-x.y.z-build

• Change to the build directory:

cd nest-simulator-x.y.z-build

• Configure NEST:

../nest-simulator-x.y.z/configure


with appropriate configuration options

• Compile and install by running:

make
make install


## Dependencies¶

The GNU readline library is recommended if you use NEST interactively without Python. Although most Linux distributions have GNU readline installed, you still need to install its development package if want to use GNU readline with NEST. GNU readline itself depends on libncurses <or libtermcap on older systems). Again, the development packages are needed to compile NEST.

The GNU Scientific Library is needed by several neuron models, in particular those with conductance based synapses. If you want these models, please install the GNU Scientific Library along with its development packages. We strongly recommend that you install/update to GNU Scientific Library v1.11 or later.

If you want to use PyNEST, we recommend to install the following along with their development packages:

Additionally, NEST depends on a few POSIX libraries which are usually present on all UNIX like operating systems (Linux, Mac OS), so don’t worry. But if you wonder why NEST is difficult to compile on Windows, it is because of these:

• libregexp, for regular expressions.

### Minimal configuration¶

NEST can be compiled without any external packages; such configuration may be useful e.g. for initial porting to a new supercomputer. However, this implies several restrictions: First, some neuron and synapse models will not be available, as they depend on ODE solvers from the GNU scientific library. Second, the Python extension will not be available, and third, multi-threading and parallel computing facilities will be disabled.

To compile NEST without external packages, use the following command line to configure it:

tar -xzvf nest-simulator-x.y.z.tar.gz mkdir nest-simulator-x.y.z-build cd nest-simulator-x.y.z-build

../nest-simulator-x.y.z/configure


### Configuration options¶

If you need special features, like e.g. support for distributed computing, you can add command line switches to the call to configure. ./configure --help will show you all available options. For more information on the installation of NEST, please see the file INSTALL that is included in the distribution archive for the version of NEST you want to install.

## Using the correct compiler¶

We strongly recommend that you use the same compiler version to compile NEST that was used to build Python / OpenMPI. Usually, this will be the system compiler (note: by default, MacPorts compiles using the system compiler). Python displays which compiler it was compiled with at startup.

When compiling NEST with a newer GCC than Python was compiled with, most bets are off, since different GCC versions generate different binary code. PyNEST may then crash Python. Either make sure that gcc and g++ are the system compiler, or force compilation with the system compiler, configure like this (append any other configure options):

../nest-simulator-x.y.z/configure CC=/usr/bin/gcc CXX=/usr/bin/g++


## MPI issues¶

Mac OS X 10.5 and later comes with MPI pre-installed and --with-mpi should work. If you should get an error message like this:

libtool: link: /usr/bin/mpicxx -W -Wall -pedantic -Wno-long-long -O0 -g -DNO_UNUSED_SYN -o .libs/nest main.o neststartup.o
/Users/plesser/NEST/code/branches/bluegeneP/bld/topology/.lib s/libtopologymodule.dylib
/Users/plesser/NEST/code/branches/bluegeneP/bld/developer/.libs/libdevelopermodule.dylib ../nestkernel/.libs/libnest.a
/opt/local/lib/libgsl.dylib /opt/local/lib/libgslcblas.dylib -lm
Undefined symbols:
"MPI::Comm::Set_errhandler(MPI::Errhandler const&)", referenced from:
vtable for MPI::Commin main.o
vtable for MPI::Intracommin main.o
vtable for MPI::Cartcommin main.o

[snip]

vtable for MPI::Winin libnestutil.a(libnestutil_la-nest_timemodifier.o)
vtable for MPI::Winin libnest.a(libnest_la-ring_buffer.o)

there is most likely a conflict between several MPI installations on your computer, in the example above with OpenMPI from MacPorts. In this case, you need to deactivate/uninstall the conflicting MPI installation. It is unfortunately not trivial to ignore other MPI installations. One brutal work-around is to edit the nest/Makefile, in the build directory and add -L/usr/lib before all other -L` options in the line building NEST.