Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

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