title: Error while building NAS benchmarks
body: <p>I am trying to build NAS benchmarks using Intel MPI and below is the makefile that I am using.</p>
  
  <pre><code>   #---------------------------------------------------------------------------
  #
  #                SITE- AND/OR PLATFORM-SPECIFIC DEFINITIONS. 
  #
  #---------------------------------------------------------------------------
  
  #---------------------------------------------------------------------------
  # Items in this file will need to be changed for each platform.
  #---------------------------------------------------------------------------
  
  #---------------------------------------------------------------------------
  # Parallel Fortran:
  #
  # For CG, EP, FT, MG, LU, SP and BT, which are in Fortran, the following must 
  # be defined:
  #
  # MPIF77     - Fortran compiler
  # FFLAGS     - Fortran compilation arguments
  # FMPI_INC   - any -I arguments required for compiling MPI/Fortran 
  # FLINK      - Fortran linker
  # FLINKFLAGS - Fortran linker arguments
  # FMPI_LIB   - any -L and -l arguments required for linking MPI/Fortran 
  # 
  # compilations are done with $(MPIF77) $(FMPI_INC) $(FFLAGS) or
  #                            $(MPIF77) $(FFLAGS)
  # linking is done with       $(FLINK) $(FMPI_LIB) $(FLINKFLAGS)
  #---------------------------------------------------------------------------
  
  #---------------------------------------------------------------------------
  # This is the fortran compiler used for MPI programs
  #---------------------------------------------------------------------------
  MPIF77 = gfortran
  # This links MPI fortran programs; usually the same as ${MPIF77}
  FLINK   = $(MPIF77)
  
  #---------------------------------------------------------------------------
  # These macros are passed to the linker to help link with MPI correctly
  #---------------------------------------------------------------------------
  FMPI_LIB  =  -L/share/apps/intel/impi/5.0.2.044/intel64/lib -lmpi
  
  
  #---------------------------------------------------------------------------
  # These macros are passed to the compiler to help find 'mpif.h'
  #---------------------------------------------------------------------------
  FMPI_INC = -I/share/apps/intel/impi/5.0.2.044/intel64/include
  
  #---------------------------------------------------------------------------
  # Global *compile time* flags for Fortran programs
  #---------------------------------------------------------------------------
  FFLAGS  = -O
  
  #---------------------------------------------------------------------------
  # Global *link time* flags. Flags for increasing maximum executable 
  # size usually go here. 
  #---------------------------------------------------------------------------
  FLINKFLAGS = -O
  
  
  #---------------------------------------------------------------------------
  # Parallel C:
  #
  # For IS, which is in C, the following must be defined:
  #
  # MPICC      - C compiler 
  # CFLAGS     - C compilation arguments
  # CMPI_INC   - any -I arguments required for compiling MPI/C 
  # CLINK      - C linker
  # CLINKFLAGS - C linker flags
  # CMPI_LIB   - any -L and -l arguments required for linking MPI/C 
  #
  # compilations are done with $(MPICC) $(CMPI_INC) $(CFLAGS) or
  #                            $(MPICC) $(CFLAGS)
  # linking is done with       $(CLINK) $(CMPI_LIB) $(CLINKFLAGS)
  #---------------------------------------------------------------------------
  
  #---------------------------------------------------------------------------
  # This is the C compiler used for MPI programs
  #---------------------------------------------------------------------------
  MPICC = cc
  # This links MPI C programs; usually the same as ${MPICC}
  CLINK   = $(MPICC)
  
  #---------------------------------------------------------------------------
  # These macros are passed to the linker to help link with MPI correctly
  #---------------------------------------------------------------------------
  CMPI_LIB  = -L/usr/local/lib -lmpi
  
  #---------------------------------------------------------------------------
  # These macros are passed to the compiler to help find 'mpi.h'
  #---------------------------------------------------------------------------
  CMPI_INC = -I/usr/local/include
  
  #---------------------------------------------------------------------------
  # Global *compile time* flags for C programs
  #---------------------------------------------------------------------------
  CFLAGS  = -O
  
  #---------------------------------------------------------------------------
  # Global *link time* flags. Flags for increasing maximum executable 
  # size usually go here. 
  #---------------------------------------------------------------------------
  CLINKFLAGS = -O
  
  
  #---------------------------------------------------------------------------
  # MPI dummy library:
  #
  # Uncomment if you want to use the MPI dummy library supplied by NAS instead 
  # of the true message-passing library. The include file redefines several of
  # the above macros. It also invokes make in subdirectory MPI_dummy. Make 
  # sure that no spaces or tabs precede include.
  #---------------------------------------------------------------------------
  # include ../config/make.dummy
  
  
  #---------------------------------------------------------------------------
  # Utilities C:
  #
  # This is the C compiler used to compile C utilities.  Flags required by 
  # this compiler go here also; typically there are few flags required; hence 
  # there are no separate macros provided for such flags.
  #---------------------------------------------------------------------------
  CC  = cc -g
  
  
  #---------------------------------------------------------------------------
  # Destination of executables, relative to subdirs of the main directory. . 
  #---------------------------------------------------------------------------
  BINDIR  = ../bin
  
  
  #---------------------------------------------------------------------------
  # Some machines (e.g. Crays) have 128-bit DOUBLE PRECISION numbers, which
  # is twice the precision required for the NPB suite. A compiler flag 
  # (e.g. -dp) can usually be used to change DOUBLE PRECISION variables to
  # 64 bits, but the MPI library may continue to send 128 bits. Short of
  # recompiling MPI, the solution is to use MPI_REAL to send these 64-bit
  # numbers, and MPI_COMPLEX to send their complex counterparts. Uncomment
  # the following line to enable this substitution. 
  # 
  # NOTE: IF THE I/O BENCHMARK IS BEING BUILT, WE USE CONVERTFLAG TO
  #       SPECIFIY THE FORTRAN RECORD LENGTH UNIT. IT IS A SYSTEM-SPECIFIC
  #       VALUE (USUALLY 1 OR 4). UNCOMMENT THE SECOND LINE AND SUBSTITUTE
  #       THE CORRECT VALUE FOR "length".
  #       IF BOTH 128-BIT DOUBLE PRECISION NUMBERS AND I/O ARE TO BE ENABLED,
  #       UNCOMMENT THE THIRD LINE AND SUBSTITUTE THE CORRECT VALUE FOR
  #       "length"
  #---------------------------------------------------------------------------
  # CONVERTFLAG   = -DCONVERTDOUBLE
  # CONVERTFLAG   = -DFORTRAN_REC_SIZE=length
  # CONVERTFLAG   = -DCONVERTDOUBLE -DFORTRAN_REC_SIZE=length
  
  
  #---------------------------------------------------------------------------
  # The variable RAND controls which random number generator 
  # is used. It is described in detail in README.install. 
  # Use "randi8" unless there is a reason to use another one. 
  # Other allowed values are "randi8_safe", "randdp" and "randdpvec"
  #---------------------------------------------------------------------------
  RAND   = randi8
  # The following is highly reliable but may be slow:
  # RAND   = randdp
  </code></pre>
  
  <p>When I try to build let's say EP benchmark   <strong><em>make NPROCS=8 EP CLASS=C</em></strong>, I get an error like</p>
  
  <pre><code> =========================================
     =      NAS Parallel Benchmarks 3.3      =
     =      MPI/F77/C                        =
     =========================================
  
  cd EP; make NPROCS=8 CLASS=C
  make[1]: Entering directory `/home/vaibhavs/NPB3.3/NPB3.3-MPI/EP'
  make[2]: Entering directory `/home/vaibhavs/NPB3.3/NPB3.3-MPI/sys'
  cc -g  -o setparams setparams.c
  make[2]: Leaving directory `/home/vaibhavs/NPB3.3/NPB3.3-MPI/sys'
  ../sys/setparams ep 8 C
  make.def modified. Rebuilding npbparams.h just in case
  rm -f npbparams.h
  ../sys/setparams ep 8 C
  gfortran -c -I/share/apps/intel/impi/5.0.2.044/intel64/include -O ep.f
  gfortran -O -o ../bin/ep.C.8 ep.o ../common/print_results.o ../common/randi8.o ../common/timers.o -L/share/app                                                                               s/intel/impi/5.0.2.044/intel64/lib -lmpi
  ep.o: In function `MAIN__':
  ep.f:(.text+0x31): undefined reference to `mpi_init_'
  ep.f:(.text+0x4b): undefined reference to `mpi_comm_rank_'
  ep.f:(.text+0x65): undefined reference to `mpi_comm_size_'
  ep.f:(.text+0x347): undefined reference to `mpi_abort_'
  ep.f:(.text+0x3df): undefined reference to `mpi_barrier_'
  ep.f:(.text+0x803): undefined reference to `mpi_allreduce_'
  ep.f:(.text+0x842): undefined reference to `mpi_allreduce_'
  ep.f:(.text+0x879): undefined reference to `mpi_allreduce_'
  ep.f:(.text+0x935): undefined reference to `mpi_allreduce_'
  ep.f:(.text+0xc70): undefined reference to `mpi_finalize_'
  ../common/timers.o: In function `timer_stop_':
  timers.f:(.text+0x27): undefined reference to `mpi_wtime_'
  ../common/timers.o: In function `timer_start_':
  timers.f:(.text+0x57): undefined reference to `mpi_wtime_'
  collect2: ld returned 1 exit status
  make[1]: *** [../bin/ep.C.8] Error 1
  make[1]: Leaving directory `/home/vaibhavs/NPB3.3/NPB3.3-MPI/EP'
  make: *** [ep] Error 2
  </code></pre>
  
  <p>Can anybody please help me in resolving this issue?</p>
  
  <p>Thanks</p>