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

Reply via email to