[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