mpicc - Compiles and links MPI programs written in C
This command can be used to compile and link MPI programs written in C. It
provides the options and any special libraries that are needed to compile and
link MPI programs.
It is important to use this command, particularly when linking programs, as it
provides the necessary libraries.
- -show
- - Show the commands that would be used without running
them
- -help
- - Give short help
- -cc=name
- - Use compiler name instead of the default choice.
Use this only if the compiler is compatible with the MPICH library (see
below)
- -config=name
- - Load a configuration file for a particular compiler. This
allows a single mpicc command to be used with multiple
compilers.
- -compile_info
- - Show the steps for compiling a program. This option can
be used to see what options and include paths are used by mpicc.
- -link_info
- - Show the steps for linking a program. This option can be
used to see what options and libraries are used by mpicc.
- -profile=name
- - Use the MPI profiling given by name. See below for
details
- -echo
- - Show exactly what this program is doing. This option
should normally not be used.
- -static
- - mpi - Use a statically compile MPI library, but shared
libraries for all of the other dependencies.
- others
- - are passed to the compiler or linker. For example,
-c causes files to be compiled, -g selects compilation with
debugging on most systems, and -o name causes linking with the
output executable given the name name .
The environment variable
MPICH_CC may be used to select different C
compiler and linker. Note that since MPICH is built with a particular C and
Fortran compiler, changing the compilers used can cause problems. Use this
only if you could intermix code compiled with the different compilers.
The environment variable
MPICC_PROFILE specifies a profile library and
has the same effect as if
-profile=$MPICC_PROFILE were used as an
argument to
mpicc . See the discussion of
-profile below for
more details.
The MPI library may be used with any compiler that uses the same lengths for
basic data objects (such as
long double ) and that uses compatible
run-time libraries. On many systems, the various compilers are compatible and
may be used interchangeably. There are exceptions; if you use the
MPICH_CC environment variable or the
-cc=name command-line
argument to override the choice of compiler and encounter problems, try
reconfiguring MPICH with the new compiler and installing MPICH in a separate
location. See the installation manual for more details.
To compile a single file
foo.c , use
mpicc -c foo.c
To link the output and make an executable, use
mpicc -o foo foo.o
Combining compilation and linking in a single command
mpicc -o foo foo.c
is a convenient way to build simple programs.
The
-profile=name argument allows you to specify an MPI profiling library
to be used.
name can have two forms:
A library in the same directory as the MPI library
The name of a profile configuration file
If
name is a library, then this library is included before the MPI
library. This allows the simple use of libraries that make use of the MPI
profiling interface and that are installed in the same directory as the MPI
library.
If
name.conf is the name of a file in the sysconfdir directory, then this
is read and may define the following variables:
- PROFILE_PRELIB
- - Libraries (and paths) to include before the MPI
library
- PROFILE_POSTLIB
- - Libraries to include after the MPI library
- PROFILE_INCPATHS
- - C preprocessor arguments for any include files For
example, to add /usr/local/myprof/include to the include path and
the library libmyprof.a in /usr/local/myprof/lib to the link
step, you could create the file myprof.conf with the lines
PROFILE_PRELIB="-L/usr/local/myprof/lib -lmyprof"
PROFILE_INCPATHS="-I/usr/local/myprof/include"
and place it in the sysconfdir directory (this directory is set at configure
time when MPICH is built). Then using the command-line argument
-profile=myprof will cause these definitions to be added to the
relevant compile commands.
mpicxx, mpifort, mpiexec