Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] 1.7.4rc2r30148 - static link failure on NetBSD
From: Paul Hargrove (phhargrove_at_[hidden])
Date: 2014-01-11 19:59:13


Digging through my emails I found an issue (in the email quoted below) that
I had forgotten about.
The basic issue is that NetBSD puts aio support in librt rather than libc,
but this is only visible when linking statically.

Fortunately, NetBSD is one of the very few platforms on which I have
sufficiently new autotools to run autogen.pl.
The patch below resolves the problem for me.
However, I am not certain if/how this fits with OMPI's standard practices
with regards to configure tests.

-Paul

--- openmpi-1.9a1r30255/ompi/mca/fbtl/posix/configure.m4~ 2014-01-11
15:53:19.000000000 -0800
+++ openmpi-1.9a1r30255/ompi/mca/fbtl/posix/configure.m4 2014-01-11
16:25:53.000000000 -0800
@@ -25,9 +25,11 @@
 AC_DEFUN([MCA_ompi_fbtl_posix_CONFIG],[
     AC_CONFIG_FILES([ompi/mca/fbtl/posix/Makefile])

+ fbtl_posix_happy="no"
     AC_CHECK_HEADER([aio.h],
- [fbtl_posix_happy="yes"],
- [fbtl_posix_happy="no"])
+ [dnl NetBSD has aio_* in -lrt, usually in libc
+ OMPI_CHECK_FUNC_LIB([aio_write], [rt],
+ [fbtl_posix_happy="yes"])])

     AS_IF([test "$fbtl_posix_happy" = "yes"],
           [$1],

On Wed, Jan 8, 2014 at 11:22 AM, Paul Hargrove <phhargrove_at_[hidden]> wrote:

> When I compile the current 1.7.4rc on NetBSD with no configure arguments,
> I still get the "make install" failure that I have detailed in previous
> emails.
>
> HOWEVER, if I configure with "--enable-static --disable-shared" then I get
> an earlier failure at build time (partial "make V=1" output shown below).
>
> When linking otfmerge-mpi, the aio_* symbols from
> libmpi.a(ompi/mca/fbtl/posix/fbtl_posix_ipwritev.o) are not resolved.
> According to the man pages on this system, those symbols reside in librt,
> but there is no occurrence of "-lrt" in either the libtool command line or
> the gcc command line generated by libtool.
>
> NOTE, however, that this problem does NOT occur when building a default
> shared library version despite ALSO lacking any explicit "-lrt" in the link
> command.
>
> -Paul
>
>
> /bin/ksh ../../../libtool --tag=CC --mode=link gcc -DOTFMERGE_MPI
> -g -finline-functions -fno-strict-aliasing -pthread
> -L/home/phargrov/OMPI/openmpi-1.7-latest-netbsd6-amd64/BLD/ompi/contrib/vt/vt/../../../.libs
> -o otfmerge-mpi otfmerge_mpi-handler.o otfmerge_mpi-otfmerge.o
> ../../../otflib/libopen-trace-format.la ../../../otfauxlib/libotfaux.la-lmpi
> libtool: link: gcc -DOTFMERGE_MPI -g -finline-functions
> -fno-strict-aliasing -pthread -o otfmerge-mpi otfmerge_mpi-handler.o
> otfmerge_mpi-otfmerge.o
> -L/home/phargrov/OMPI/openmpi-1.7-latest-netbsd6-amd64/BLD/ompi/contrib/vt/vt/../../../.libs
> ../../../otflib/.libs/libopen-trace-format.a -lz
> ../../../otfauxlib/.libs/libotfaux.a
> /home/phargrov/OMPI/openmpi-1.7-latest-netbsd6-amd64/BLD/ompi/contrib/vt/vt/../../../.libs/libmpi.a
> /home/phargrov/OMPI/openmpi-1.7-latest-netbsd6-amd64/BLD/orte/.libs/libopen-rte.a
> /home/phargrov/OMPI/openmpi-1.7-latest-netbsd6-amd64/BLD/opal/.libs/libopen-pal.a
> -lutil -lm -lpthread -pthread
> /home/phargrov/OMPI/openmpi-1.7-latest-netbsd6-amd64/BLD/ompi/contrib/vt/vt/../../../.libs/libmpi.a(fbtl_posix_ipwritev.o):
> In function `mca_fbtl_posix_ipwritev':
> /home/phargrov/OMPI/openmpi-1.7-latest-netbsd6-amd64/openmpi-1.7-latest/ompi/mca/fbtl/posix/fbtl_posix_ipwritev.c:90:
> undefined reference to `aio_write'
> /home/phargrov/OMPI/openmpi-1.7-latest-netbsd6-amd64/openmpi-1.7-latest/ompi/mca/fbtl/posix/fbtl_posix_ipwritev.c:112:
> undefined reference to `aio_write'
> /home/phargrov/OMPI/openmpi-1.7-latest-netbsd6-amd64/openmpi-1.7-latest/ompi/mca/fbtl/posix/fbtl_posix_ipwritev.c:159:
> undefined reference to `aio_write'
> /home/phargrov/OMPI/openmpi-1.7-latest-netbsd6-amd64/openmpi-1.7-latest/ompi/mca/fbtl/posix/fbtl_posix_ipwritev.c:180:
> undefined reference to `aio_write'
> *** Error code 1
>
> Stop.
> make: stopped in
> /home/phargrov/OMPI/openmpi-1.7-latest-netbsd6-amd64/BLD/ompi/contrib/vt/vt/extlib/otf/tools/otfmerge/mpi
>
> --
> Paul H. Hargrove PHHargrove_at_[hidden]
> Future Technologies Group
> Computer and Data Sciences Department Tel: +1-510-495-2352
> Lawrence Berkeley National Laboratory Fax: +1-510-486-6900
>

-- 
Paul H. Hargrove                          PHHargrove_at_[hidden]
Future Technologies Group
Computer and Data Sciences Department     Tel: +1-510-495-2352
Lawrence Berkeley National Laboratory     Fax: +1-510-486-6900