> You can't mix stdio.h (which I think g++ uses internally) with > MPICH2's C++ bindings, because for some reason the MPI-2 C++ binding > reuses macro names from the C standard. We used to have a workaround > for this in libMesh, but it caused its own problems, so since we only > use the MPI C bindings anyway we now only link against MPICH with C++ > bindings turned off.
Yeah -- Unfortunately, the MPI C++ interface is really not very useful. It puts everything in an MPI namespace, but that is about it. Besides, we use PETSc/Parmetis,both of which require MPI_*** in the global namespace anyway. I prefer using the C API wrapped as it is in Parallel:: anyway - I think Roy's use of templates and function overloading here is much more useful than the C++ MPI interface. Also, since the C++ ABI is not entirely standard, using the C++ MPI ivterface would likely further limit the choice of compilers when using e.g. Vendor-supplied MPI on supercomputers. > Because ICES keeps f77 around linked to g77 from gcc 3.2, the libMesh > configure script tries to link using library paths from the old > version of gcc; this confuses the linker when called from g++: > "warning: libstdc++.so.6, needed by > /ices/roystgnr/software/libmesh/lib/x86_64-unknown-linux-gnu_dbg/libmesh.so, > may conflict with libstdc++.so.5" Telling configure to use the newer > gfortran instead fixed this. > > I'd say the f77/gfortran confusion counts as a bug in our configure > scripts, but I'm not sure what we could do to fix it other than detect > and error out when we saw such a version conflict. Hopefully we won't > have too many people trying to install on systems where the default C > compiler is GCC4 and the default Fortran compiler is GCC3. This one is a little touchy and has been an issue for a while... The crux of the problem is that we check for 'AC_PROG_F77' which checks for a Fortran-77 capable compiler. Since PETSc only requires Fortran-77 support this is the right thing to do, since libMesh only needs to be capable of linking to f77 programs. ./configure searches for a number of compilers in this case, and it looks for g77 before gfortran. Again, this is the right thing to do. 'AC_PROG_FC' is one solution, but this looks for a Fortran-90+ compiler which we really don't need. Since this is pretty gcc/g77 specific, we should be able to detect a gcc/g77 version mismatch, look for gfortran, and then abort if unsuccessful. -Ben ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Libmesh-devel mailing list Libmesh-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libmesh-devel