I found removing extern "C" in lac/source/sparsity_tools.cc can resolve this
issue.

Mengda

On Fri, Jul 3, 2009 at 1:16 PM, Mengda Wu <[email protected]> wrote:

> Hi all,
>
>    I am trying to compile with the svn version of dealii but some errors
> occur related to MPI. I am using
> openmpi and petsc in Ubuntu karmic. The command I used to configure is
>
> CC=mpicc CXX=mpicxx F77=mpif77 F90=mpif90 ./configure
> --with-petsc=/usr/lib/petscdir/3.0.0 --with-petsc-arch=linux-gnu-c-opt
> --with-slepc=/usr/lib/slepcdir/3.0.0 --with-slepc-arch=linux-gnu-c-opt
> --with-metis-include=/usr/include/metis --with-metis-libs=/usr/lib
> --with-umfpack-include=/usr/include/suitesparse --with-umfpack-libs=/usr/lib
>
>   The error messages are
> =====lac==============optimized==MT== sparsity_pattern.cc
> =====lac==============optimized==MT== sparsity_tools.cc
> In file included from /usr/include/c++/4.4/utility:62,
>                  from
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.h:37,
>                  from /usr/lib/openmpi/include/mpi.h:1870,
>                  from /usr/include/parmetis.h:17,
>                  from /usr/include/metis/metis.h:27,
>                  from source/sparsity_tools.cc:23:
> /usr/include/c++/4.4/bits/stl_relops.h:83: error: template with C linkage
> /usr/include/c++/4.4/bits/stl_relops.h:96: error: template with C linkage
> /usr/include/c++/4.4/bits/stl_relops.h:109: error: template with C linkage
> /usr/include/c++/4.4/bits/stl_relops.h:122: error: template with C linkage
> In file included from
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.h:202,
>                  from /usr/lib/openmpi/include/mpi.h:1870,
>                  from /usr/include/parmetis.h:17,
>                  from /usr/include/metis/metis.h:27,
>                  from source/sparsity_tools.cc:23:
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions.h:61: error:
> declaration of C function ‘void MPI::Init()’ conflicts with
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions.h:58: error:
> previous declaration ‘void MPI::Init(int&, char**&)’ here
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions.h:86: error:
> declaration of C function ‘int MPI::Init_thread(int)’ conflicts with
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions.h:83: error:
> previous declaration ‘int MPI::Init_thread(int&, char**&, int)’ here
> In file included from
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.h:237,
>                  from /usr/lib/openmpi/include/mpi.h:1870,
>                  from /usr/include/parmetis.h:17,
>                  from /usr/include/metis/metis.h:27,
>                  from source/sparsity_tools.cc:23:
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file.h:40: error: declaration
> of C function ‘void MPI::Register_datarep(const char*, int (*)(void*,
> ompi_datatype_t*, int, void*, MPI_Offset, void*), void (*)(void*,
> MPI::Datatype&, int, void*, MPI::Offset, void*), void (*)(const
> MPI::Datatype&, MPI::Aint&, void*), void*)’ conflicts with
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file.h:29: error: previous
> declaration ‘void MPI::Register_datarep(const char*, void (*)(void*,
> MPI::Datatype&, int, void*, MPI::Offset, void*), void (*)(void*,
> MPI::Datatype&, int, void*, MPI::Offset, void*), void (*)(const
> MPI::Datatype&, MPI::Aint&, void*), void*)’ here
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file.h:47: error: declaration
> of C function ‘void MPI::Register_datarep(const char*, void (*)(void*,
> MPI::Datatype&, int, void*, MPI::Offset, void*), int (*)(void*,
> ompi_datatype_t*, int, void*, MPI_Offset, void*), void (*)(const
> MPI::Datatype&, MPI::Aint&, void*), void*)’ conflicts with
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file.h:36: error: previous
> declaration ‘void MPI::Register_datarep(const char*, int (*)(void*,
> ompi_datatype_t*, int, void*, MPI_Offset, void*), void (*)(void*,
> MPI::Datatype&, int, void*, MPI::Offset, void*), void (*)(const
> MPI::Datatype&, MPI::Aint&, void*), void*)’ here
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file.h:54: error: declaration
> of C function ‘void MPI::Register_datarep(const char*, int (*)(void*,
> ompi_datatype_t*, int, void*, MPI_Offset, void*), int (*)(void*,
> ompi_datatype_t*, int, void*, MPI_Offset, void*), void (*)(const
> MPI::Datatype&, MPI::Aint&, void*), void*)’ conflicts with
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/file.h:43: error: previous
> declaration ‘void MPI::Register_datarep(const char*, void (*)(void*,
> MPI::Datatype&, int, void*, MPI::Offset, void*), int (*)(void*,
> ompi_datatype_t*, int, void*, MPI_Offset, void*), void (*)(const
> MPI::Datatype&, MPI::Aint&, void*), void*)’ here
> In file included from
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/mpicxx.h:286,
>                  from /usr/lib/openmpi/include/mpi.h:1870,
>                  from /usr/include/parmetis.h:17,
>                  from /usr/include/metis/metis.h:27,
>                  from source/sparsity_tools.cc:23:
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h:96: error:
> ‘void MPI::Init(int&, char**&)’ should have been declared inside ‘MPI’
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h: In function
> ‘void MPI::Init(int&, char**&)’:
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h:96: error:
> declaration of C function ‘void MPI::Init(int&, char**&)’ conflicts with
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions.h:61: error:
> previous declaration ‘void MPI::Init()’ here
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h: At global
> scope:
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h:103: error:
> ‘void MPI::Init()’ should have been declared inside ‘MPI’
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h: In function
> ‘void MPI::Init()’:
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h:103: error:
> declaration of C function ‘void MPI::Init()’ conflicts with
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h:96: error:
> previous declaration ‘void MPI::Init(int&, char**&)’ here
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h: At global
> scope:
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h:147: error:
> ‘int MPI::Init_thread(int&, char**&, int)’ should have been declared inside
> ‘MPI’
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h: In function
> ‘int MPI::Init_thread(int&, char**&, int)’:
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h:147: error:
> declaration of C function ‘int MPI::Init_thread(int&, char**&, int)’
> conflicts with
> /usr/lib/openmpi/include/openmpi/ompi/mpi/cxx/functions_inln.h:137: error:
> previous declaration ‘int MPI::Init_thread(int)’ here
> make[1]: *** [/home/phdggg/Develop/deal.II/lib/lac/sparsity_tools.o] Error
> 1
> make[1]: Leaving directory `/home/phdggg/Develop/deal.II/lac'
> make: *** [laco] Error 2
>
> I hope someone can help me on this issue.
>
> Thanks,
> Mengda
>
_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii

Reply via email to