On Sun, 20 Jul 2008 21:13:48 +0200, Ralf Wildenhues <ralf.wildenh...@gmx.de> wrote: > * 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/../../../crti.o >> /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/crtendS.o >> /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': >> > /home/fwang/rpm/BUILD/openmpi-1.2.6/ompi/mpi/cxx/../../../ompi/mpi/cxx/errhandler.h:30: >> undefined reference to `ompi_mpi_errors_are_fatal' > > I suppose ompi/mpi/cxx/Makefile.am is missing some libmpi_cxx_la_LIBADD > line.
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 upon). 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. Brian