Open MPI logo

Open MPI User's Mailing List Archives

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

Subject: Re: [OMPI users] gcc problem compiling openmpi-1.6.1 on Solaris 10 sparc
From: Siegmar Gross (Siegmar.Gross_at_[hidden])
Date: 2012-09-09 12:05:39


Hi,

> Can you test the 1.6.2rc tarball and see if the problem is resolved?
>
> http://www.open-mpi.org/software/ompi/v1.6/

I get no unexpected warnings from "configure" but still errors from "make".

...
Creating mpi/man/man3/OpenMPI.3 man page...
make[2]: Leaving directory `/.../openmpi-1.6.2-SunOS.sparc.64_gcc/ompi'
Making all in mpi/cxx
make[2]: Entering directory `/.../openmpi-1.6.2-SunOS.sparc.64_gcc/ompi/mpi/cxx'
  CXX mpicxx.lo
In file included from /usr/include/stdio.h:66:0,
                 from ../../../../openmpi-1.6.2rc1/ompi/mpi/cxx/mpicxx.h:50,
                 from ../../../../openmpi-1.6.2rc1/ompi/mpi/cxx/mpicxx.cc:22:
/usr/include/iso/stdio_iso.h:195:60: error:
  redefinition of 'const char* restrict'
/usr/include/iso/stdio_iso.h:195:32: error:
  'const char* restrict' previously declared here
/usr/include/iso/stdio_iso.h:197:16: error:
  redefinition of 'const char* restrict'
/usr/include/iso/stdio_iso.h:196:34: error:
  'const char* restrict' previously declared here
/usr/include/iso/stdio_iso.h:197:38: error:
  conflicting declaration 'std::FILE* restrict'
/usr/include/iso/stdio_iso.h:196:34: error:
  'restrict' has a previous declaration as 'const char* restrict'
/usr/include/iso/stdio_iso.h:198:48: error:
  conflicting declaration 'char* restrict'
/usr/include/iso/stdio_iso.h:198:26: error:
  'restrict' has a previous declaration as 'std::FILE* restrict'
...
/usr/include/iso/stdio_c99.h:70:64: error:
  conflicting declaration 'const char* restrict'
/usr/include/iso/stdio_c99.h:70:28: error:
  'restrict' has a previous declaration as 'char* restrict'
In file included from /usr/include/iso/wchar_iso.h:26:0,
                 from /usr/include/wchar.h:13,
                 from /usr/local/gcc-4.7.1/include/c++/4.7.1/cwchar:46,
                 from /usr/local/gcc-4.7.1/include/c++/4.7.1/bits/postypes.h:42,
                 from /usr/local/gcc-4.7.1/include/c++/4.7.1/iosfwd:42,
                 from /usr/local/gcc-4.7.1/include/c++/4.7.1/ios:39,
                 from /usr/local/gcc-4.7.1/include/c++/4.7.1/ostream:40,
                 from /usr/local/gcc-4.7.1/include/c++/4.7.1/iostream:40,
                 from ../../../../openmpi-1.6.2rc1/ompi/mpi/cxx/mpicxx.h:53,
                 from ../../../../openmpi-1.6.2rc1/ompi/mpi/cxx/mpicxx.cc:22:
/usr/include/iso/time_iso.h:92:66: error:
  conflicting declaration 'const char* restrict'
/usr/include/iso/time_iso.h:92:30: error:
  'restrict' has a previous declaration as 'char* restrict'
...
In file included from ../../../../openmpi-1.6.2rc1/ompi/mpi/cxx/functions_inln.h:22:0,
                 from ../../../../openmpi-1.6.2rc1/ompi/mpi/cxx/mpicxx.h:272,
                 from ../../../../openmpi-1.6.2rc1/ompi/mpi/cxx/mpicxx.cc:22:
/usr/include/string.h:65:57: error: conflicting declaration 'const char* restrict'
/usr/include/string.h:65:29: error:
  'restrict' has a previous declaration as 'char* restrict'
...
In file included from /usr/include/stdlib.h:18:0,
                 from ../../../../openmpi-1.6.2rc1/opal/class/opal_object.h:122,
                 from ../../../../openmpi-1.6.2rc1/ompi/errhandler/errhandler.h:30,
                 from ../../../../openmpi-1.6.2rc1/ompi/mpi/cxx/mpicxx.cc:37:
/usr/include/iso/stdlib_iso.h:113:14: error:
  previous declaration of 'void* std::bsearch(const void*, const void*, ulong_t,
  ulong_t, int (*)(const void*, const void*))' with 'C' linkage
/usr/include/iso/stdlib_iso.h:118:38: error:
  conflicts with new declaration with 'C++' linkage
/usr/include/iso/stdlib_iso.h:134:13: error: previous declaration of
  'void std::qsort(void*, ulong_t, ulong_t, int (*)(const void*, const void*))'
   with 'C' linkage
/usr/include/iso/stdlib_iso.h:137:72: error: conflicts with new declaration
  with 'C++' linkage
make[2]: *** [mpicxx.lo] Error 1
make[2]: Leaving directory `/.../openmpi-1.6.2-SunOS.sparc.64_gcc/ompi/mpi/cxx'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/.../openmpi-1.6.2-SunOS.sparc.64_gcc/ompi'
make: *** [all-recursive] Error 1

tyr openmpi-1.6.2-SunOS.sparc.64_gcc 166 gcc --version
gcc (GCC) 4.7.1

I also still get the error with the C/C++ compiler from Oracle Solaris Studio.

...
  CC libotfaux_la-OTFAUX_State.lo
  CCLD libotfaux.la
make[8]: Leaving directory `/.../openmpi-1.6.2-SunOS.sparc.64_cc/ompi/contrib/vt/vt/extlib/otf/otfauxlib'
Making all in tools
make[8]: Entering directory `/.../openmpi-1.6.2-SunOS.sparc.64_cc/ompi/contrib/vt/vt/extlib/otf/tools'
Making all in otfaux
make[9]: Entering directory `/.../openmpi-1.6.2-SunOS.sparc.64_cc/ompi/contrib/vt/vt/extlib/otf/tools/otfaux'
  CXX otfaux.o
"../../../../../../../../../openmpi-1.6.2rc1/ompi/contrib/vt/vt/extlib/otf/tools/otfaux/otfaux.cpp",
  line 834: Error: The function "rint" must have a prototype.
1 Error(s) detected.

You include "cmath.h" which I don't have.

tyr openmpi-1.6.2-SunOS.sparc.64_cc 171 find /usr/include -name cmath.h
tyr openmpi-1.6.2-SunOS.sparc.64_cc 172 find /usr/local/gcc-4.7.1/ -name cmath.h
tyr openmpi-1.6.2-SunOS.sparc.64_cc 173

The prototype is in math.h. When I add "#include <math.h>" the error disappears,
although I'm not sure if it is allowed to add this file in a C++ file.

I get the following warning from "configure".

checking stdbool.h presence... yes
configure: WARNING: stdbool.h: present but cannot be compiled
configure: WARNING: stdbool.h: check for missing prerequisite headers?
configure: WARNING: stdbool.h: see the Autoconf documentation
configure: WARNING: stdbool.h: section "Present But Cannot Be Compiled"
configure: WARNING: stdbool.h: proceeding with the compiler's result
configure: WARNING: ## ------------------------------------------------------ ##
configure: WARNING: ## Report this to http://www.open-mpi.org/community/help/ ##
configure: WARNING: ## ------------------------------------------------------ ##
checking for stdbool.h... no
checking if <stdbool.h> works... no (don't have <stdbool.h>)

I try to build openmpi-1.6.2 with "cc" on my other architectures on Monday or
Tuesday.

Kind regards

Siegmar

> On Aug 27, 2012, at 7:04 AM, Siegmar Gross wrote:
>
> > Hi,
> >
> > we have installed the latest patches on our Solaris machines and I have
> > a problem compiling openmpi-1.6.1 with gcc-4.6.2. I used the following
> > commands.
> >
> > mkdir openmpi-1.6.1-${SYSTEM_ENV}.${MACHINE_ENV}.64_gcc
> > cd openmpi-1.6.1-${SYSTEM_ENV}.${MACHINE_ENV}.64_gcc
> >
> > ../openmpi-1.6.1/configure --prefix=/usr/local/openmpi-1.6.1_64_gcc \
> > --libdir=/usr/local/openmpi-1.6.1_64_gcc/lib64 \
> > LDFLAGS="-m64 -L/usr/local/gcc-4.6.2/lib/sparcv9" \
> > CC="gcc" CXX="g++" F77="gfortran" FC="gfortran" \
> > CFLAGS="-m64" CXXFLAGS="-m64" FFLAGS="-m64" FCFLAGS="-m64" \
> > CPP="cpp" CXXCPP="cpp" \
> > CPPFLAGS="" CXXCPPFLAGS="" \
> > 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-orterun-prefix-by-default \
> > --with-threads=posix --enable-mpi-thread-multiple \
> > --enable-opal-multi-threads \
> > --with-hwloc=internal --with-ft=LAM --enable-sparse-groups \
> > |& tee log.configure.$SYSTEM_ENV.$MACHINE_ENV.64_gcc
> >
> > make |& tee log.make.$SYSTEM_ENV.$MACHINE_ENV.64_gcc
> >
> > "log.configure.SunOS.sparc.64_gcc" shows no errors.
> > "log.make.SunOS.sparc.64_gcc" breaks with the following error.
> >
> > ...
> > Creating mpi/man/man3/OpenMPI.3 man page...
> > make[2]: Leaving directory
> > `/.../openmpi-1.6.1-SunOS.sparc.64_gcc/ompi'
> > Making all in mpi/cxx
> > make[2]: Entering directory
> > `/.../openmpi-1.6.1-SunOS.sparc.64_gcc/ompi/mpi/cxx'
> > CXX mpicxx.lo
> > In file included from /usr/include/stdio.h:66:0,
> > from ../../../../openmpi-1.6.1/ompi/mpi/cxx/mpicxx.h:50,
> > from ../../../../openmpi-1.6.1/ompi/mpi/cxx/mpicxx.cc:22:
> > /usr/include/iso/stdio_iso.h:195:60: error:
> > redefinition of 'const char* restrict'
> > /usr/include/iso/stdio_iso.h:195:32: error:
> > 'const char* restrict' previously declared here
> > /usr/include/iso/stdio_iso.h:197:16: error:
> > redefinition of 'const char* restrict'
> > /usr/include/iso/stdio_iso.h:196:34: error:
> > 'const char* restrict' previously declared here
> > /usr/include/iso/stdio_iso.h:197:38: error:
> > conflicting declaration 'FILE* restrict'
> > /usr/include/iso/stdio_iso.h:196:34: error:
> > 'restrict' has a previous declaration as 'const char* restrict'
> > /usr/include/iso/stdio_iso.h:198:48: error:
> > conflicting declaration 'char* restrict'
> > /usr/include/iso/stdio_iso.h:198:26: error:
> > 'restrict' has a previous declaration as 'FILE* restrict'
> > ...
> >
> > Many lines of similar errors.
> >
> > ...
> > In file included from
> > ../../../../openmpi-1.6.1/ompi/mpi/cxx/functions_inln.h:22:0,
> > from ../../../../openmpi-1.6.1/ompi/mpi/cxx/mpicxx.h:272,
> > from ../../../../openmpi-1.6.1/ompi/mpi/cxx/mpicxx.cc:22:
> > /usr/include/string.h:65:57: error:
> > conflicting declaration 'const char* restrict'
> > /usr/include/string.h:65:29: error:
> > 'restrict' has a previous declaration as 'char* restrict'
> > /usr/include/string.h:66:9: error:
> > conflicting declaration 'char** restrict'
> > /usr/include/string.h:65:29: error:
> > 'restrict' has a previous declaration as 'char* restrict'
> > /usr/include/string.h:71:56: error:
> > conflicting declaration 'const void* restrict'
> > /usr/include/string.h:71:28: error:
> > 'restrict' has a previous declaration as 'void* restrict'
> > /usr/include/string.h:77:53: error:
> > conflicting declaration 'void* restrict'
> > /usr/include/string.h:77:31: error:
> > 'restrict' has a previous declaration as 'const void* restrict'
> > /usr/include/string.h:78:56: error:
> > conflicting declaration 'void* restrict'
> > /usr/include/string.h:78:34: error:
> > 'restrict' has a previous declaration as 'const void* restrict'
> > make[2]: *** [mpicxx.lo] Error 1
> > make[2]: Leaving directory `.../openmpi-1.6.1-SunOS.sparc.64_gcc/ompi/mpi/cxx'
> > make[1]: *** [all-recursive] Error 1
> > make[1]: Leaving directory `.../openmpi-1.6.1-SunOS.sparc.64_gcc/ompi'
> > make: *** [all-recursive] Error 1
> > tyr openmpi-1.6.1-SunOS.sparc.64_gcc 127
> >
> >
> > Has anyone else a similar problem? Is our system responsible for the
> > problem so that I must open a service request or is something wrong
> > with openmpi? 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
>
>
> --
> Jeff Squyres
> jsquyres_at_[hidden]
> For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
>
>