Open MPI logo

Open MPI User's Mailing List Archives

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

Subject: Re: [OMPI users] problems compiling openmpi-1.6 on some platforms
From: Matthias Jurenz (matthias.jurenz_at_[hidden])
Date: 2012-06-05 04:07:46


Hello,

the patch below fixes the build issue on Solaris 10. Please apply it to Open
MPI 1.6 as follows:

$ cd openmpi-1.6
$ patch -p1 <openmpi-1.6patch_vt_sol10_build_issue_fix.diff
$ make ; make install

Thanks for the report!

Best regards,
Matthias Jurenz

----------------------------------------------
openmpi-1.6patch_vt_sol10_build_issue_fix.diff:

diff -u -r -N openmpi-1.6/ompi/contrib/vt/vt/vtlib/vt_libwrap.c
openmpi-1.6_vt_sol10_build_issue_fix/ompi/contrib/vt/vt/vtlib/vt_libwrap.c
--- openmpi-1.6/ompi/contrib/vt/vt/vtlib/vt_libwrap.c 2012-04-24
21:18:17.000000000 +0200
+++ openmpi-1.6_vt_sol10_build_issue_fix/ompi/contrib/vt/vt/vtlib/vt_libwrap.c
2012-06-05 10:02:36.022566303 +0200
@@ -83,7 +83,7 @@
   if( libc_errno == NULL )
   {
     (void)dlerror();
-#ifdef HAVE_DECL___ERRNO_LOCATION
+#if defined(HAVE_DECL___ERRNO_LOCATION) && HAVE_DECL___ERRNO_LOCATION
     *(void**)(&libc_errno) = dlsym(libc_handle, libc_errno_sym);
 #else /* HAVE_DECL___ERRNO_LOCATION */
     libc_errno = (int*)dlsym(libc_handle, libc_errno_sym);
@@ -102,7 +102,7 @@
     }
   }

-#ifdef HAVE_DECL___ERRNO_LOCATION
+#if defined(HAVE_DECL___ERRNO_LOCATION) && HAVE_DECL___ERRNO_LOCATION
   return libc_errno();
 #else /* HAVE_DECL___ERRNO_LOCATION */
   return libc_errno;
----------------------------------------------

> From: Siegmar Gross <Siegmar.Gross_at_[hidden]>
> Subject: [OMPI users] problems compiling openmpi-1.6 on some platforms
> Date: May 30, 2012 7:29:31 AM EDT
> To: <users_at_[hidden]>
> Reply-To: Siegmar Gross <Siegmar.Gross_at_[hidden]>, Open MPI
Users <users_at_[hidden]>
>
> Hi,
>
> I tried to compile "openmpi-1.6" on "Solaris 10" and Linux
> (openSUSE 12.1) with "gcc-4.6.2" and "Sun C 5.12" (Oracle Solaris
> Studio 12.3) with mainly the following configuration for a 64- and
> 32-bit installation. "-L/usr/local/..." was necessary because "gcc"
> didn't find its 64-bit libraries without this option.
>
> ../openmpi-1.6/configure --prefix=/usr/local/openmpi-1.6_64_gcc \
> --libdir=/usr/local/openmpi-1.6_64_gcc/lib64 \
> LDFLAGS="-m64 -L/usr/local/gcc-4.6.2/lib/sparcv9" \
> CC="gcc" CPP="cpp" CXX="g++" CXXCPP="cpp" F77="gfortran" \
> CFLAGS="-m64" CXXFLAGS="-m64" FFLAGS="-m64" FCFLAGS="-m64" \
> CXXLDFLAGS="-m64" CPPFLAGS="" \
> C_INCL_PATH="" C_INCLUDE_PATH="" CPLUS_INCLUDE_PATH="" \
> OBJC_INCLUDE_PATH="" MPIHOME="" \
> --without-udapl --without-openib \
> --enable-mpi-f90 --with-mpi-f90-size=small \
> --enable-heterogeneous --enable-cxx-exceptions \
> --enable-shared --enable-orterun-prefix-by-default \
> --with-threads=posix --enable-mpi-thread-multiple \
> --with-hwloc=internal --with-ft=LAM --enable-sparse-groups \
> |& tee log.configure.$SYSTEM_ENV.$MACHINE_ENV.64_gcc
>
>
> For "cc" I used 'CC="cc" CXX="CC" F77="f77" FC="f95"'. With "gcc"
> I got for example the following error so that I had to add the option
> "--disable-vt" to the gcc-configuration.
>
>
> tail -n 20 log.make.SunOS.sparc.64_gcc
>
> make[5]: Leaving directory `.../ompi/contrib/vt/vt/rfg'
> Making all in vtlib
> make[5]: Entering directory `.../ompi/contrib/vt/vt/vtlib'
> CC vt_comp_gnu.lo
> CC vt_iowrap.lo
> CC vt_iowrap_helper.lo
> CC vt_libwrap.lo
> ../../../../../../openmpi-1.6/ompi/contrib/vt/vt/vtlib/vt_libwrap.c:
> In function 'get_libc_errno_ptr':
> ../../../../../../openmpi-1.6/ompi/contrib/vt/vt/vtlib/vt_libwrap.c:
> 106:20: error: called object 'libc_errno' is not a function
> make[5]: *** [vt_libwrap.lo] Error 1
> ...
>
>
> With these options I was able to install OpenMPI on some of my
> platforms.
>
> ls -d /export2/prog/*/openmpi-1.6*
>
> /export2/prog/Linux_x86/openmpi-1.6_32_gcc
> /export2/prog/Linux_x86_64/openmpi-1.6_32_gcc
> /export2/prog/Linux_x86_64/openmpi-1.6_64_gcc
> /export2/prog/SunOS_sparc/openmpi-1.6_32_cc
> /export2/prog/SunOS_sparc/openmpi-1.6_32_gcc
> /export2/prog/SunOS_sparc/openmpi-1.6_64_cc
> /export2/prog/SunOS_sparc/openmpi-1.6_64_gcc
> /export2/prog/SunOS_x86_64/openmpi-1.6_32_cc
> /export2/prog/SunOS_x86_64/openmpi-1.6_32_gcc
> /export2/prog/SunOS_x86_64/openmpi-1.6_64_cc
> /export2/prog/SunOS_x86_64/openmpi-1.6_64_gcc
>
>
> Unfortunately "cc" on Linux creates the following error.
>
> ln -s "../../../openmpi-1.6/opal/asm/generated/
> atomic-ia32-linux-nongas.s" atomic-asm.S
> CPPAS atomic-asm.lo
> <command-line>:19:0: warning: "__FLT_EVAL_METHOD__" redefined
> [enabled by default]
> <built-in>:110:0: note: this is the location of the previous definition
> cpp: fatal error: -fuse-linker-plugin, but liblto_plugin.so not found
> compilation terminated.
> cc: cpp failed for atomic-asm.S
> make[2]: *** [atomic-asm.lo] Error 1
> make[2]: Leaving directory `/.../opal/asm'
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory `/.../opal'
> make: *** [all-recursive] Error 1
>
>
> Adding the option "--with-libltdl=internal" (should be the default
> anyway) didn't solve the problem so that I tried to add the options
> "--without-libltdl --disable-dlopen" to the cc-configuration on
> Linux. Unfortunately I still get the above error although I started
> everything in a new directory.
>
> ln -s "../../../openmpi-1.6/opal/asm/generated/
> atomic-ia32-linux-nongas.s" atomic-asm.S
> CPPAS atomic-asm.lo
> <command-line>:19:0: warning: "__FLT_EVAL_METHOD__" redefined
> [enabled by default]
> <built-in>:110:0: note: this is the location of the previous definition
> cpp: fatal error: -fuse-linker-plugin, but liblto_plugin.so not found
> compilation terminated.
> cc: cpp failed for atomic-asm.S
> make[2]: *** [atomic-asm.lo] Error 1
> make[2]: Leaving directory `/.../opal/asm'
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory `/.../opal'
> make: *** [all-recursive] Error 1
>
> linpc1 openmpi-1.6-Linux.x86.32_cc 94 more config.log
> This file contains any messages produced by compilers while
> running configure, to aid debugging if configure makes a mistake.
>
> It was created by Open MPI configure 1.6, which was
> generated by GNU Autoconf 2.68. Invocation command line was
>
> $ ../openmpi-1.6/configure --prefix=/usr/local/openmpi-1.6_32_cc LDFLAGS=-
m32
> CC=cc CXX=CC F77=f77 FC=f95 CFLAGS=-m32 CXXFLAGS=-m32 FFLAGS=-m32 FCFLAGS=-
m32 C
> XXLDFLAGS=-m32 CPPFLAGS= C_INCL_PATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH=
OBJC_I
> NCLUDE_PATH= MPICHHOME= --without-udapl --without-openib --enable-mpi-f90 --
with
> -mpi-f90-size=small --enable-heterogeneous --enable-cxx-exceptions --enable-
shar
> ed --enable-orterun-prefix-by-default --with-threads=posix --enable-mpi-
thread-m
> ultiple --with-hwloc=internal --with-ft=LAM --enable-sparse-groups --
without-lib
> ltdl --disable-dlopen
>
>
>
> I have another problem on SunOS_x86 with both "cc" and "gcc" where
> "configure" breaks with the following error.
>
> configure: creating ./config.status
> config.status: creating Makefile
> ./config.status: line 1197: 4396 Done(141)
> eval sed \"\$ac_sed_extra\" "$ac_file_inputs"
> 4397 Segmentation Fault | $AWK -f "$ac_tmp/subs.awk" > $ac_tmp/out
> config.status: error: could not create Makefile
> configure: /bin/bash '../../../openmpi-1.6/opal/libltdl/configure'
> failed for opal/libltdl
> configure: WARNING: Failed to build GNU libltdl. This usually means
> that something
> configure: WARNING: is incorrectly setup with your environment.
> There may be useful information in
> configure: WARNING: opal/libltdl/config.log. You can also disable GNU
> libltdl, which will disable
> configure: WARNING: dynamic shared object loading, by configuring with
> --disable-dlopen.
> configure: error: Cannot continue
>
>
> I tried once more adding the option "--disable-dlopen" without success.
>
> configure: creating ./config.status
> config.status: creating ompi/include/ompi/version.h
> ./config.status: line 3410: 26746 Done
> eval sed \"\$ac_sed_extra\" "$ac_file_inputs"
> 26747 Segmentation Fault | $AWK -f "$ac_tmp/subs.awk" > $ac_tmp/out
> config.status: error: could not create ompi/include/ompi/version.h
>
> sunpc1 openmpi-1.6-SunOS.x86.32_gcc 83 more config.log
> This file contains any messages produced by compilers while
> running configure, to aid debugging if configure makes a mistake.
>
> It was created by Open MPI configure 1.6, which was
> generated by GNU Autoconf 2.68. Invocation command line was
>
> $ ../openmpi-1.6/configure --prefix=/usr/local/openmpi-1.6_32_cc LDFLAGS=-
m32
> CC=cc CXX=CC F77=f77 FC=f95 CFLAGS=-m32 CXXFLAGS=-m32 FFLAGS=-m32 FCFLAGS=-
m32 C
> XXLDFLAGS=-m32 CPPFLAGS= C_INCL_PATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH=
OBJC_I
> NCLUDE_PATH= MPICHHOME= --without-udapl --without-openib --enable-mpi-f90 --
with
> -mpi-f90-size=small --enable-heterogeneous --enable-cxx-exceptions --enable-
shar
> ed --enable-orterun-prefix-by-default --with-threads=posix --enable-mpi-
thread-m
> ultiple --with-hwloc=internal --with-ft=LAM --enable-sparse-groups --
disable-dlo
> pen
>
>
> I can create files and there is enough space available.
>
> sunpc1 fd1026 104 cd /export2/src/openmpi-1.6/
> sunpc1 openmpi-1.6 105 touch x
> sunpc1 openmpi-1.6 106 rm x
> sunpc1 openmpi-1.6 107 df -kh /export2
> Filesystem Size Used Avail Use% Mounted on
> xxx:/export2 229G 121G 107G 54% /export2
>
>
> Do you have any suggestions how I can solve the problems on the
> following platforms?
>
> Linux_x86, 32-bit, cc
> Linux_x86_64, 32-bit, cc
> Linux_x86_64, 64-bit, cc
> SunOS_x86, 32-bit, cc
> SunOS_x86, 32-bit, gcc
>
> Thank you very much for any help in advance.
>
>
> Kind regards
>
> Siegmar
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users