This is very odd behavior. The application code can't find the symbols in
libmpi and libmpi can't find symbols that should be provided by the C++
standard library. This usually means that you're trying to mix compilers
-- using GCC for the app and stdlib and SGI C++ for LAM, or something
similar to that. Actually, changing the version of g++ used to compile
code can have the same problem, as GCC changed the C++ name mangling
scheme a couple of times between GCC 3.0 and 4.0. My guess is that
different versions of GCC are the cause of your problems -- you might want
to recompile LAM to make sure it was compiled with the same version of GCC
you used to compile your application.
Brian
On Thu, 7 Dec 2006, Carlos Ruano Sánchez wrote:
> We are trying to compile a MPI program in an IRIX 6.5 system and we're in
> trouble. The Makefile is the following:
>
> CC=mpic++
> FLAGS=-v
> LIBS=
>
> all: viajante clear
> clear:
> rm *.o
> viajante: memoria.o calculo.o
> $(CC) $(FLAGS) -o viajante memoria.o calculo.o $(LIBS)
> memoria.o: memoria.cpp
> $(CC) -Wunused-variable -c memoria.cpp
> calculo.o: calculo.cpp
> $(CC) -Wunused-variable -c calculo.cpp
>
> When we execute "make" we get the following errors:
>
> mpic++ -v -o viajante memoria.o calculo.o
> Reading specs from /usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.3/specs
> Configured with: ../configure --prefix=/usr/freeware
> --enable-version-specific-runtime-libs --disable-shared --enable-threads
> --enable-haifa --enable-libgcj --disable-c-mbchar
> Thread model: single
> gcc version 3.3
> /usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.3/collect2 -call_shared
> -no_unresolved -init __do_global_ctors -fini __do_global_dtors
> -_SYSTYPE_SVR4 -woff 131 -n32 -o viajante /usr/lib32/mips3/crt1.o
> /usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.3/crtbegin.o -L/usr/local/lib
> -L/usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.3 -L/usr/bin
> -L/usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.3/../../.. memoria.o
> calculo.o -llammpio -llammpi++ -llamf77mpi -lmpi -llam -lpthread -lstdc++
> -lm -dont_warn_unused -lgcc -warn_unused -L/usr/lib32/mips3 -L/usr/lib32
> -dont_warn_unused -lc -warn_unused -dont_warn_unused -lgcc -warn_unused
> /usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.3/crtend.o
> /usr/lib32/mips3/crtn.o
> ld32: WARNING 84: /usr/local/lib/liblammpio.a is not used for resolving any
> symbol.
> ld32: WARNING 84: /usr/local/lib/liblamf77mpi.a is not used for resolving
> any symbol.
> ld32: WARNING 84: /usr/lib32/libm.so is not used for resolving any symbol.
> ld32: ERROR 33: Unresolved text symbol "PMPI::Comm::mpi_comm_map" -- 1st
> referenced by memoria.o.
> Use linker option -v to see when and which objects, archives and
> dsos are loaded.
> ld32: ERROR 33: Unresolved text symbol "PMPI::Comm::mpi_err_map" -- 1st
> referenced by memoria.o.
> Use linker option -v to see when and which objects, archives and
> dsos are loaded.
> ld32: ERROR 33: Unresolved text symbol "PMPI::Intracomm::current_op" -- 1st
> referenced by memoria.o.
> Use linker option -v to see when and which objects, archives and
> dsos are loaded.
> ld32: ERROR 33: Unresolved text symbol "MPI::Is_initialized()" -- 1st
> referenced by memoria.o.
> Use linker option -v to see when and which objects, archives and
> dsos are loaded.
> ld32: ERROR 33: Unresolved text symbol "__builtin_vec_new" -- 1st referenced
> by /usr/local/lib/liblammpi++.a(intercepts.o).
> Use linker option -v to see when and which objects, archives and
> dsos are loaded.
> ld32: ERROR 33: Unresolved text symbol "__eh_alloc" -- 1st referenced by
> /usr/local/lib/liblammpi++.a(intercepts.o).
> Use linker option -v to see when and which objects, archives and
> dsos are loaded.
> ld32: ERROR 33: Unresolved text symbol "__cp_push_exception" -- 1st
> referenced by /usr/local/lib/liblammpi++.a(intercepts.o).
> Use linker option -v to see when and which objects, archives and
> dsos are loaded.
> ld32: ERROR 33: Unresolved text symbol "__throw" -- 1st referenced by
> /usr/local/lib/liblammpi++.a(intercepts.o).
> Use linker option -v to see when and which objects, archives and
> dsos are loaded.
> ld32: ERROR 33: Unresolved text symbol "__builtin_new" -- 1st referenced by
> /usr/local/lib/liblammpi++.a(intercepts.o).
> Use linker option -v to see when and which objects, archives and
> dsos are loaded.
> ld32: ERROR 33: Unresolved text symbol "__builtin_delete" -- 1st referenced
> by /usr/local/lib/liblammpi++.a(intercepts.o).
> Use linker option -v to see when and which objects, archives and
> dsos are loaded.
> ld32: ERROR 33: Unresolved text symbol "__rtti_si" -- 1st referenced by
> /usr/local/lib/liblammpi++.a(intercepts.o).
> Use linker option -v to see when and which objects, archives and
> dsos are loaded.
> ld32: ERROR 33: Unresolved text symbol "__builtin_vec_delete" -- 1st
> referenced by /usr/local/lib/liblammpi++.a(intercepts.o).
> Use linker option -v to see when and which objects, archives and
> dsos are loaded.
> ld32: ERROR 33: Unresolved text symbol "__rtti_user" -- 1st referenced by
> /usr/local/lib/liblammpi++.a(intercepts.o).
> Use linker option -v to see when and which objects, archives and
> dsos are loaded.
> ld32: ERROR 33: Unresolved text symbol "terminate(void)" -- 1st referenced
> by /usr/local/lib/liblammpi++.a(intracomm.o).
> Use linker option -v to see when and which objects, archives and
> dsos are loaded.
> ld32: ERROR 33: Unresolved text symbol "MPI::Op::Init(void (*)(void const*,
> void*, int, MPI::Datatype const&), bool)" -- 1st referenced by memoria.o.
> Use linker option -v to see when and which objects, archives and
> dsos are loaded.
> ld32: ERROR 33: Unresolved text symbol "MPI::Op::Free()" -- 1st referenced
> by memoria.o.
> Use linker option -v to see when and which objects, archives and
> dsos are loaded.
> ld32: ERROR 33: Unresolved text symbol "__pure_virtual" -- 1st referenced by
> /usr/local/lib/liblammpi++.a(comm.o).
> Use linker option -v to see when and which objects, archives and
> dsos are loaded.
> ld32: INFO 152: Output file removed because of error.
> collect2: ld returned 2 exit status
> mpic++: No such file or directory
> make: *** [viajante] Error 1
>
> Do you have any idea about what's happening?
>
> Thanks in advance!
>
|