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: Jeff Squyres (jsquyres_at_[hidden])
Date: 2012-09-10 15:13:00


Ok, so this is 2 errors.

1. Something in the C++ bindings (which is weird because it's new; I don't think this code has changed in a long, long time). This actually looks like a problem in your C++ compiler, however -- can you compile other C++ applications at all?

2. Same issue in VT. I'll ping the VT guys again...

On Sep 9, 2012, at 12:05 PM, Siegmar Gross wrote:

> 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/
>>
>>
>

-- 
Jeff Squyres
jsquyres_at_[hidden]
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/