On Sun, 20 Jul 2008 21:13:48 +0200, Ralf Wildenhues
> * Funda Wang wrote on Sun, Jul 20, 2008 at 05:29:57AM CEST:
>> I'm currently building openmpi 1.2.6 under Mandriva cooker, and its
>> default LDFLAGS is "-Wl,--as-needed -Wl,--no-undefined".
>> But openmpi 1.2.6 builds failed with:
>> libtool: link: g++ -shared -nostdlib
>> /usr/lib/gcc/i586-manbo-linux-gnu/4.3.1/crtbeginS.o .libs/mpicxx.o
>> .libs/intercepts.o .libs/comm.o .libs/datatype.o .libs/file.o
>> .libs/win.o -lnsl -lutil -L/usr/lib/gcc/i586-manbo-linux-gnu/4.3.1
>> -L/usr/lib/gcc/i586-manbo-linux-gnu/4.3.1/../../.. -lstdc++ -lm
>> -lpthread -lc -lgcc_s
>> /usr/lib/gcc/i586-manbo-linux-gnu/4.3.1/../../../crtn.o -march=i586
>> -mtune=generic -pthread -Wl,--no-undefined -pthread -Wl,-soname
>> -Wl,libmpi_cxx.so.0 -o .libs/libmpi_cxx.so.0.0.0
>> .libs/mpicxx.o: In function `Errhandler':
>> undefined reference to `ompi_mpi_errors_are_fatal'
> I suppose ompi/mpi/cxx/Makefile.am is missing some libmpi_cxx_la_LIBADD
Yeah, Ralf's correct -- Open MPI's missing the LIBADD fields to cause the
C++, F77, and F90 bindings to not link against libmpi.so (which they depend
There's no good solution to this problem in Open MPI 1.2.6, other than to
not build with -Wl,--no-undefined. The fix requires rebuilding the
Makefile, which is a little dicy from an Open MPI release tarball.
Hopefully, one of the current developers can patch this for upcoming
releases. Unfortunately, most of the time, such a link isn't really
required, so this never came up before. It does seem weird that a
distribution would enable that option by default, since many projects don't
properly handle the situation well.