Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] Build failure with OMPI-1.5 (clang-2.8, gcc-4.5.1 with debug options)
From: Matthias Jurenz (matthias.jurenz_at_[hidden])
Date: 2010-10-15 10:56:50


> On Thu, Oct 14, 2010 at 22:36, Jeff Squyres <jsquyres_at_[hidden]> wrote:
>
> > On Oct 11, 2010, at 4:50 PM, Jed Brown wrote:
> >
> > > Note that this is an out-of-source build.
> > >
> > > $ ../configure --enable-debug --enable-mem-debug
> > --prefix=/home/jed/usr/ompi-1.5-clang CC=clang CXX=clang++
> > > $ make
> > > [...]
> > > CXXLD vtunify-mpi
> > > vtunify_mpi-vt_unify_mpi.o: In function `VTUnify_MPI_Abort':
> > >
> >
/home/jed/src/openmpi-1.5/bclang/ompi/contrib/vt/vt/tools/vtunify/mpi/../../../../../../../../ompi/contrib/vt/vt/tools/vtunify/mpi/vt_unify_mpi.c:63:
> > undefined reference to `MPI_Abort'
> >
> > Well this is disappointing. :-\
> >
> > Can you "make V=1" so that we can see the command line here that is
> > failing?
> >
>
> libtool: link: clang++ -DVT_MPI -g -finline-functions -pthread -o
> .libs/vtunify-mpi vtunify_mpi-vt_unify_mpi.o vtunify_mpi-vt_unify.o
> vtunify_mpi-vt_unify_defs.o vtunify_mpi-vt_unify_defs_hdlr.o
> vtunify_mpi-vt_unify_events.o vtunify_mpi-vt_unify_events_hdlr.o
> vtunify_mpi-vt_unify_markers.o vtunify_mpi-vt_unify_markers_hdlr.o
> vtunify_mpi-vt_unify_stats.o vtunify_mpi-vt_unify_stats_hdlr.o
> vtunify_mpi-vt_unify_tkfac.o ../../../util/.libs/libutil.a
> ../../../extlib/otf/otflib/.libs/libotf.so -lz
> -L/home/jed/src/openmpi-1.5/bclang/ompi/contrib/vt/vt/../../../.libs
> /home/jed/src/openmpi-1.5/bclang/ompi/contrib/vt/vt/../../../.libs/libmpi.so
> -ldl -lnsl -lutil -lm -pthread -Wl,-rpath
> -Wl,/home/jed/usr/ompi-1.5-clang/lib
> vtunify_mpi-vt_unify_mpi.o: In function `VTUnify_MPI_Abort':
>
/home/jed/src/openmpi-1.5/bclang/ompi/contrib/vt/vt/tools/vtunify/mpi/../../../../../../../../ompi/contrib/vt/vt/tools/vtunify/mpi/vt_unify_mpi.c:63:
> undefined reference to `MPI_Abort'
>
> > FWIW, this looks like a problem that is self-contained in VampirTrace, so
> > you can likely get a working build with:
> >
> > ./configure --enable-contrib-no-build=vt ...
> >
> > > Leaving out the debugging flags gets me further (no compilation error,
> > just this link error):
> > >
> > > $ ../configure --prefix=/home/jed/usr/ompi-1.5-clang CC=clang CXX=clang++
> > > $ make
> > > [...]
> > > CCLD libutil.la
> > > ar:
> > /home/jed/src/openmpi-1.5/bclang/ompi/contrib/vt/vt/util/.libs/libutil.a:
No
> > such file or directory
> > > make[5]: *** [libutil.la] Error 9
> >
> > That's a weird one -- it should be *creating* that library, so I'm not
sure
> > why it would complain that the library doesn't exist...? This could be a
> > red herring, though -- perhaps some oddity in your tree and/or
> > filesystem...? (I've seen this kind of thing before such that a "make
> > distclean" fixed the issue, I think)
> >
>
> Sure enough, using a new build directory, I get the same error as above:
>
> libtool: link: clang++ -DVT_MPI -O3 -DNDEBUG -finline-functions -pthread -o
> .libs/vtunify-mpi vtunify_mpi-vt_unify_mpi.o vtunify_mpi-vt_unify.o vtunif
> y_mpi-vt_unify_defs.o vtunify_mpi-vt_unify_defs_hdlr.o
> vtunify_mpi-vt_unify_events.o vtunify_mpi-vt_unify_events_hdlr.o
> vtunify_mpi-vt_unify_markers.o
> vtunify_mpi-vt_unify_markers_hdlr.o vtunify_mpi-vt_unify_stats.o
> vtunify_mpi-vt_unify_stats_hdlr.o vtunify_mpi-vt_unify_tkfac.o
> ../../../util/.libs/
> libutil.a ../../../extlib/otf/otflib/.libs/libotf.so -lz
> -L/home/jed/src/openmpi-1.5/bclang-nodbg/ompi/contrib/vt/vt/../../../.libs
> /home/jed/src/open
> mpi-1.5/bclang-nodbg/ompi/contrib/vt/vt/../../../.libs/libmpi.so -ldl -lnsl
> -lutil -lm -pthread -Wl,-rpath -Wl,/home/jed/usr/ompi-1.5-clang-nodbg/lib
> vtunify_mpi-vt_unify_mpi.o: In function `VTUnify_MPI_Abort':
> ../../../../../../../../ompi/contrib/vt/vt/tools/vtunify/mpi/vt_unify_mpi.c:
(.text+0xa):
> undefined reference to `MPI_Abort'
>
> Grab config.log for this case here:
>
> http://59A2.org/files/openmpi-1.5-clang-config.log
>
> > > I also get this last failure with gcc-4.5.1, but only with the debug
> > flags:
> > >
> > > $ ../configure --enable-debug --enable-mem-debug
> > --prefix=/home/jed/usr/ompi-1.5-gcc CC=gcc CXX=g++
> > > $ make
> > > [...]
> > > Making all in util
> > > CC libutil_la-installdirs.lo
> > > CCLD libutil.la
> > > ar:
> > /home/jed/src/openmpi-1.5/bgcc/ompi/contrib/vt/vt/util/.libs/libutil.a: No
> > such file or directory
> >
> > Same error. Weird. Can you "make V=1" here, too?
>
> This one completes with a clean build directory, reconfiguring from a
> non-debug build must have caused this issue the first time around.
>

This is definitely a Libtool issue. I could simply reproduce this error by
reconfiguring from a previous build regardless of which options passed to the
configure:

configure
make
configure
make

It seems to me that libtool doesn't correctly cleanup its previous created
output files. Just before libtool builds the library, it removes libutil.la and
libutil.a from the .libs directory, but not libutil.la from CWD.

If I run 'make clean' or manually remove the libutil.la, it works.

Unfortunately, this issue is also persistent in Libtool version 2.2.8 and
2.2.4.

Matthias

> Jed