Current problem: 1. A abc bug illustrated by abcBug.c, abcBugHead1.h and abcBugHead2.h 2. Error: Undeclared identifier sysconf at timer.c:45.41-47 "sysconf" sysconf looks like a constant defined in standard library. [unused file] ABC v0.2 of 31-mar-2014 -- http://vsl.cis.udel.edu/abc Error: Expected 14 arguments but saw 13 at par_difconv.c:224.34-225.73 "hypre_map(ix,iy,iz-1 ... )" [solved] ABC v0.2 of 31-mar-2014 -- http://vsl.cis.udel.edu/abc Error: No conversion from type of right hand side to that of left: (void) * struct MPI_Comm at gen_redcs_mat.c:449.6-mpi.h:5.22 "new_comm = ((void*) ... )" make: *** [abc_amg2013] Error 6 AMG2013/parcsr_ls/ Probably what happened is: this file was read in after mpi.h was read. However in reality, this file will be preprocessed and compiled with other headers insteaed of mpi.h. In those headers, MPI_Comm is defined to be int, and MPI_COMM_NULL is (-1). Here are the includes: #include "parcsr_ls.h" #include "parcsr_mv.h" #include "seq_mv.h" #include "par_amg.h" In parcsr_ls.h: #include "HYPRE_parcsr_ls.h" ... #include "utilities.h" utilities.h includes HYPRE_utilities.h. In HYPRE_utilities.h, mpi.h is included first. In utilities.h there is then a bunch of #defines which redefine MPI_Comm, etc. In mpi.h: typedef struct MPI_Comm MPI_Comm; In utilities.h: #define MPI_Comm hypre_MPI_Comm ... typedef int hypre_MPI_Comm;