For generic installation instructions, refer also to the INSTALL file.
-
./bootstrap (optional, needed only if you add/modify m4 files or configure.ac)
-
./configure --prefix=/path/to/libmesh/install
-
make
-
make check (optional, runs the example programs and unit tests when possible)
-
make install
libMesh supports the notion of multiple methods - that is, compilation settings used to build the library. The major methods supported by the library are:
-
opt: Fully optimized mode, with little to no error checking. No debugging symbols are included in the resulting library. Aggressive optimization flags are used.
-
dbg: Full debugging mode - all useful compiler warnings are enabled, as well as robust internal state checking. The asymptotic complexity of some algorithms is allowed to be worse than the design spec states.
-
devel: Use high levels of compiler optimization, but also enable internal state checking. Debugging symbols are included, but the resulting code is not always easy to navigate in a debugger because of compiler optimizations.
-
pro: Optimized code path with compiler flags suitable for use with gprof.
-
oprof: Optimized code path with compiler flags suitable for use with oprofile.
To select a set of methods, you can pass them to configure in one of two ways:
$ ./configure --with-methods="opt dbg devel"
or
$ ./configure METHODS="devel oprof"
If unspecified, the three METHODS="opt dbg devel" are default.
libMesh fully supports out-of-tree builds, and users are encouraged to use this feature when needed to support multiple compilers. For example, on a system where multiple compilers are available and accessible via modules, you can share the same source tree by creating a subdirectory for each compiler build:
$ export LIBMESH_SRC=/local/libmesh
$ cd $LIBMESH_SRC
$ module load gcc/6.3
$ cd $LIBMESH_SRC && mkdir gcc-6.3 && cd gcc-6.3 && ../configure && make && make install
$ module swap gcc/6.3 intel/17.0
$ cd $LIBMESH_SRC && mkdir intel-17.0 && cd intel-17.0 && ../configure && make && make install
libMesh has no required dependencies other than a reasonably modern C & C++ compiler. To run on distributed memory platforms in parallel you will also need MPI.
We support a large number of optional packages, some of which are distributed inside the ./contrib directory and are compiled directly with libMesh, others can be used from third-party installations. For a list of supported packages and optional dependencies see here
LibMesh is open source software distributed under the LGPL license, version 2.1.