Compiling MPICH

Normally, executing the sequence
or (preferably)
 configure --prefix=/home/me/mpich
 make install
is all that is needed to build MPICH. However, in some cases it may be necessary to give configure more information about the compiler. This page contains suggestions for various compilers and environments. In some cases, the information was sent to us but has not been verified because we don't have access to the same environment.
Portland Group compilers
The following has worked on Redhat Linux 6.1 and 6.2 .
./configure -c++=pgCC -cc=pgcc -fc=pgf77 \
     -cflags="-Msignextend -tp px -DUSE_U_INT_FOR_XDR -DHAVE_RPC_RPC_H=1" \
     -opt=-fast -fflags="-tp px" \
     -c++flags="-tp px" -f90flags="-tp px" -f90=pgf90 -prefix=/usr/local/mpich
The -DUSE_U_INT_FOR_XDR and -DHAVE_RPC_RPC_H=1 are required because configure fails to find them. They are not necessary for Redhat Linux 6.0.

The -tp px is used to force the Portland Group compiler to generate generic Pentium code rather than code for the system that the code is being compiled on. You will not need this if you have a homogeneous system.

The -Msignextend is needed to generate code that passes the test suite (this is probably a bug in the test suite, but most other compilers have this as their default behavior.

Some users have also found that they need to do

 setenv LIBS "-L/usr/local/pgi/linux86/lib -lpgftnrtl -lpgc"
in order for configure to determine the Fortran name mangling.

Windows users may need to add the options -Msecond_underscore -Munix when using the Portland Group Fortran compiler under Windows.

NAG F90/F95
configure attempts to determine how to pass command-line arguments to Fortran programs, but sometimes it fails. If you are using the NAG F90 or F95 compilers and you had problems after running configure, set the following environment variables and re-run configure.
setenv FXX_MODULE="        use f90_unix_env"
setenv F77_GETARG="call getarg(i,arg=s)"
setenv F77_IARGC="iargc()"