[Cmake] CMake and MPI on Sun

michael_cm at gmx.ch michael_cm at gmx.ch
Wed Jul 21 05:50:03 EDT 2004


Hi,

I have a problem when trying to compile the following mpi program with the
CMake generated makefile under Sun Solaris:

-----

#include <iostream>
#include <string.h>
#include <stdio.h>
#include "mpi.h"


using std::cout;
using std::endl;

int main( int argc, char* argv[] )
{
	int my_rank;
	int p;
	int source;
	int dest;

	int tag = 0;
	char message[100];
	MPI_Status status;

	MPI_Init(&argc, &argv);

	MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);

	MPI_Comm_size(MPI_COMM_WORLD, &p);

	if(my_rank != 0) {
		sprintf(message, "Greetings from process %d!", my_rank);
		dest = 0;
		MPI_Send(message, strlen(message) + 1, MPI_CHAR, dest, tag, 
			MPI_COMM_WORLD);
		cout << "message sent" << endl;
	} else {
		cout << "my rank: " << my_rank << endl;
		for (source = 1; source < p; source++) {
			for (long i = 0; i < 1000000000; i++) {
				int a = 0;
				a += a;
			}
			MPI_Recv(message, 100, MPI_CHAR, MPI_ANY_SOURCE, tag,
				MPI_COMM_WORLD, &status);
			cout << message << endl;
		}
	}


	MPI_Finalize();
	return 0;
}

-----

I get to following error messages:

-----
Building executable /home/kuhnmi/DA/Binary/MPITest/MPITest...
Undefined			first referenced
 symbol  			    in file
xdr_short                          
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(bswap2.o)
getsockname                        
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_sock_util.o)
xdr_u_char                         
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(bswap2.o)
listen                             
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_sock_util.o)
xdr_opaque                         
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(bswap2.o)
xdr_float                          
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_sock_sr.o)
xdr_u_long                         
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(bswap2.o)
xdr_u_int                          
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(bswap2.o)
sched_yield                        
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_tsr.o)
connect                            
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_sock_util.o)
shutdown                           
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_sock_sr.o)
xdr_long                           
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_sock_sr.o)
gethostbyname                      
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_sock_util.o)
accept                             
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_sock_util.o)
sendto                             
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_utils.o)
getsockopt                         
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_sock_util.o)
xdr_double                         
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_sock_sr.o)
xdr_u_short                        
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(bswap2.o)
getpeername                        
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_sock_util.o)
xdr_int                            
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_sock_sr.o)
socketpair                         
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_utils.o)
xdr_char                           
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(bswap2.o)
socket                             
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_utils.o)
xdrmem_create                      
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(bswap2.o)
setsockopt                         
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_sock_util.o)
inet_ntoa                          
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_sock_util.o)
bind                               
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_sock_util.o)
recv                               
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_sock_util.o)
xdr_array                          
/usr/pack/mpich-1.2.5-mo/sun4u-sun-solaris2.8/lib/libmpich.a(p4_sock_sr.o)
ld: fatal: Symbol referencing errors. No output written to
/home/kuhnmi/DA/Binary/MPITest/MPITest
collect2: ld returned 1 exit status
make[1]: *** [/home/kuhnmi/DA/Binary/MPITest/MPITest] Error 1
make: *** [default_target] Error 2

-----

I can compile the same program under Windows with the CMake-generated Visual
Studio workspace and I can compile it under Sun Solaris with mpiCC. Can
somebody explain me what I'm doing wrong or what I could do to find out what
is going wrong? The CMakeLists.txt-File I'm using looks as follows:

-----

PROJECT(MPITest)

FIND_PACKAGE(MPI)

INCLUDE_DIRECTORIES(${MPI_INCLUDE_PATH})

ADD_EXECUTABLE(MPITest MPITest.cxx)

TARGET_LINK_LIBRARIES(
  MPITest
  ${MPI_LIBRARY}
)

-----

Thanks,

Michael



More information about the Cmake mailing list