LAM/MPI logo

LAM/MPI General User's Mailing List Archives

  |   Home   |   Download   |   Documentation   |   FAQ   |   all just in this list

From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2005-11-19 13:01:17


Try setting the compilers to be mpicc and mpif77 and remove all the
-I's, -L's, and -l's for the MPI sections of your Makefile. LAM's
wrapper compilers should do all the Right Things in terms of -I's,
-L's, and -l's to compile/link MPI applications properly.

On Nov 16, 2005, at 1:20 PM, Srinivasa Prade Patri wrote:

> Hi!
> Iam trying to compile HPCC benchmark, but getting errors. Iam
> getting so many errors but listed out only last part of errors. Any
> help will be greatly appreciated.
>
> /usr/lib64/libmpi.a(ssi_crmpi_lock.o)(.text+0x23a): In function
> `lam_ssi_crmpi_base_lock_mpi':
> : undefined reference to `lam_ssi_cr_did'
> /usr/lib64/libmpi.a(ssi_crmpi_lock.o)(.text+0x246): In function
> `lam_ssi_crmpi_base_lock_mpi':
> : undefined reference to `lam_debug'
> /usr/lib64/libmpi.a(ssi_crmpi_lock.o)(.text+0x251): In function
> `lam_ssi_crmpi_base_lock_mpi':
> : undefined reference to `lam_ssi_cr_did'
> /usr/lib64/libmpi.a(ssi_crmpi_lock.o)(.text+0x25d): In function
> `lam_ssi_crmpi_base_lock_mpi':
> : undefined reference to `lam_debug'
> /usr/lib64/libmpi.a(ssi_crmpi_lock.o)(.text+0x26a): In function
> `lam_ssi_crmpi_base_lock_mpi':
> : undefined reference to `lam_ssi_cr_did'
> /usr/lib64/libmpi.a(ssi_crmpi_lock.o)(.text+0x278): In function
> `lam_ssi_crmpi_base_lock_mpi':
> : undefined reference to `lam_debug'
> /usr/lib64/libmpi.a(ssi_crmpi_lock.o)(.text+0x6): In function
> `lam_ssi_crmpi_base_init_lock':
> : undefined reference to `lam_mutex_init'
> /usr/lib64/libmpi.a(ssi_crmpi_lock.o)(.text+0x16): In function
> `lam_ssi_crmpi_base_finalize_lock':
> : undefined reference to `lam_mutex_destroy'
> /usr/lib64/libmpi.a(ssi_crmpi_lock.o)(.text+0x4c): In function
> `lam_ssi_crmpi_base_app_suspend':
> : undefined reference to `lam_mutex_lock'
> collect2: ld returned 1 exit status
> make[1]: *** [../../../../hpcc] Error 1
> make[1]: Leaving directory
> `/home/patri/benchmark/hpcc-1.0.0/hpl/lib/arch/build'
> make: *** [all] Error 2
>
> Here is my Make file
> #
> ----------------------------------------------------------------------
> SHELL = /bin/sh
> #
> CD = cd
> CP = cp
> LN_S = ln -s
> MKDIR = mkdir
> RM = /bin/rm -f
> TOUCH = touch
> #
> #
> ----------------------------------------------------------------------
> # - Platform identifier
> #
> ----------------------------------------------------------------------
> #
> ARCH = $(arch)
> #
> #
> ----------------------------------------------------------------------
> # - HPL Directory Structure / HPL library
> ------------------------------
> #
> ----------------------------------------------------------------------
> #
> TOPdir = ../../..
> INCdir = $(TOPdir)/include
> BINdir = $(TOPdir)/bin/$(ARCH)
> LIBdir = $(TOPdir)/lib/$(ARCH)
> #
> HPLlib = $(LIBdir)/libhpl.a
> #
> #
> ----------------------------------------------------------------------
> # - Message Passing library (MPI)
> #
> ----------------------------------------------------------------------
> # MPinc tells the C compiler where to find the Message Passing
> library
> # header files, MPlib is defined to be the name of the library to
> be
> # used. The variable MPdir is only used for defining MPinc and MPlib.
> #
> MPdir = /usr
> MPinc = -I$(MPdir)/include
> MPlib = $(MPdir)/lib64/libmpi.a
> #
> #
> ----------------------------------------------------------------------
> # - Linear Algebra library (BLAS or VSIPL)
> -----------------------------
> #
> ----------------------------------------------------------------------
> # LAinc tells the C compiler where to find the Linear Algebra
> library
> # header files, LAlib is defined to be the name of the library to
> be
> # used. The variable LAdir is only used for defining LAinc and LAlib.
> #
> #LAdir = $(HOME)/netlib/ARCHIVES/Linux_PII
> LAinc = /opt/acml2.6.0/gnu64/include/acml.h
> #LAlib = -lf77blas -latlas
> Lalib = /opt/acml2.6.0/gnu64/lib/libacml.a
> #
> #
> ----------------------------------------------------------------------
> # - F77 / C interface
> --------------------------------------------------
> #
> ----------------------------------------------------------------------
> # You can skip this section if and only if you are not planning to
> use
> # a BLAS library featuring a Fortran 77 interface. Otherwise, it
> is
> # necessary to fill out the F2CDEFS variable with the
> appropriate
> # options. **One and only one** option should be chosen in **each**
> of
> # the 3 following categories:
> #
> # 1) name space (How C calls a Fortran 77 routine)
> #
> # -DAdd_ : all lower case and a suffixed underscore
> (Suns,
> # Intel, ...),
> [default]
> # -DNoChange : all lower case (IBM RS6000),
> # -DUpCase : all upper case (Cray),
> # -DAdd__ : the FORTRAN compiler in use is f2c.
> #
> # 2) C and Fortran 77 integer mapping
> #
> # -DF77_INTEGER=int : Fortran 77 INTEGER is a C int,
> [default]
> # -DF77_INTEGER=long : Fortran 77 INTEGER is a C long,
> # -DF77_INTEGER=short : Fortran 77 INTEGER is a C short.
> #
> # 3) Fortran 77 string handling
> #
> # -DStringSunStyle : The string address is passed at the string
> loca-
> # tion on the stack, and the string length is
> then
> # passed as an F77_INTEGER after all
> explicit
> # stack arguments,
> [default]
> # -DStringStructPtr : The address of a structure is passed by
> a
> # Fortran 77 string, and the structure is of
> the
> # form: struct {char *cp; F77_INTEGER len;},
> # -DStringStructVal : A structure is passed by value for each
> Fortran
> # 77 string, and the structure is of the
> form:
> # struct {char *cp; F77_INTEGER len;},
> # -DStringCrayStyle : Special option for Cray machines, which
> uses
> # Cray fcd (fortran character descriptor)
> for
> # interoperation.
> #
> F2CDEFS = -DAdd_ -DF77_INTEGER=int -DStringSunStyle
> #F2CDEFS =
> #
> #
> ----------------------------------------------------------------------
> # - HPL includes / libraries / specifics
> -------------------------------
> #
> ----------------------------------------------------------------------
> #
> HPL_INCLUDES = -I$(INCdir) -I$(INCdir)/$(ARCH) $(LAinc) $(MPinc)
> HPL_LIBS = $(HPLlib) $(LAlib) $(MPlib)
> #
> # - Compile time options
> -----------------------------------------------
> #
> # -DHPL_COPY_L force the copy of the panel L before bcast;
> # -DHPL_CALL_CBLAS call the cblas interface;
> # -DHPL_CALL_VSIPL call the vsip library;
> # -DHPL_DETAILED_TIMING enable detailed timers;
> #
> # By default HPL will:
> # *) not copy L before broadcast,
> # *) call the BLAS Fortran 77 interface,
> # *) not display detailed timing information.
> #
> HPL_OPTS =
> #
> #
> ----------------------------------------------------------------------
> #
> HPL_DEFS = $(F2CDEFS) $(HPL_OPTS) $(HPL_INCLUDES)
> #
> #
> ----------------------------------------------------------------------
> # - Compilers / linkers - Optimization flags
> ---------------------------
> #
> ----------------------------------------------------------------------
> #
> CC = gcc
> CCNOOPT = $(HPL_DEFS)
> CCFLAGS = $(HPL_DEFS) -fomit-frame-pointer -O3 -funroll-loops -W
> -Wall -pipe
> #CCFLAGS = $(HPL_DEFS)
> #
> # On some platforms, it is necessary to use the Fortran linker to
> find
> # the Fortran internals used in the BLAS library.
> #
> LINKER = g77
> LINKFLAGS = $(CCFLAGS)
> #
> ARCHIVER = ar
> ARFLAGS = rc
> RANLIB = echo
> #
> #
> ----------------------------------------------------------------------
>
> Thanking You
> Regards
> Pradeep
>
>
> _______________________________________________
> This list is archived at http://www.lam-mpi.org/MailArchives/lam/
>

-- 
{+} Jeff Squyres
{+} The Open MPI Project
{+} http://www.open-mpi.org/