I am trying to compile a library of module files using make for use later in codes, that may require mpi or on earlier created modules. I have tested the compilation with pgfortran and intel compilers on linux with open-mpi 1.4.5 and it works perfectly. I have additionally tested it on linux using open-mpi 1.4.5 and gfortran 4.2.1 and on Mac OSx 10.6 with open-mpi 1.4.3 and gfortran 4.6, with both failing with the following error: Fatal Error: File 'odesoldat.mod' opened at (1) is not a GFORTRAN module file I have checked to make sure that I throughly cleaned the folders to make sure the module file as well as the object file are deleted prior to compilation. I am using the following compilation flags: FLAGS = -O3 -fdefault-real-8 -fdefault-double-8 -J $(MODULE) If anyone has insights they would be most welcome.
(In reply to comment #0) > I am trying to compile a library of module files using make for use later in > codes, that may require mpi or on earlier created modules. I have tested the > compilation with pgfortran and intel compilers on linux with open-mpi 1.4.5 and > it works perfectly. I have additionally tested it on linux using open-mpi 1.4.5 > and gfortran 4.2.1 and on Mac OSx 10.6 with open-mpi 1.4.3 and gfortran 4.6, > with both failing with the following error: > > Fatal Error: File 'odesoldat.mod' opened at (1) is not a GFORTRAN module file > > I have checked to make sure that I throughly cleaned the folders to make sure > the module file as well as the object file are deleted prior to compilation. > > I am using the following compilation flags: > FLAGS = -O3 -fdefault-real-8 -fdefault-double-8 -J $(MODULE) > > If anyone has insights they would be most welcome. What is the first line in odesoldat.mod? Have you tried using the -I option?
I have indeed tried include -I but it makes no differences. The compilation returns the same error. The 1st line states GFORTRAN module created from /.../odesolver/LSODE/datodesol.f90 on Wed Oct 3 15:35:10 2012 of course the ... is the rest of the full path
On Wed, Oct 03, 2012 at 07:37:24PM +0000, christopher.romick at gmail dot com wrote: > > I have indeed tried include -I but it makes no differences. The compilation > returns the same error. > > The 1st line states > > GFORTRAN module created from /.../odesolver/LSODE/datodesol.f90 on Wed Oct 3 > 15:35:10 2012 > > of course the ... is the rest of the full path > Which version of gfortran? With version 4.4.x and above you should have a version number. % gfc44 -c a.f90 && head -1 a.mod GFORTRAN module version '0' created from a.f90 on Wed Oct 3 12:50:55 2012 % gfc45 -c a.f90 && head -1 a.mod GFORTRAN module version '4' created from a.f90 on Wed Oct 3 12:51:00 2012 % gfc46 -c a.f90 && head -1 a.mod GFORTRAN module version '6' created from a.f90 on Wed Oct 3 12:51:04 2012 % gfc47 -c a.f90 && head -1 a.mod GFORTRAN module version '9' created from a.f90 % gfc4x -c a.f90 && head -1 a.mod GFORTRAN module version '9' created from a.f90 Do you have more than one version of gfortran installed on the system? It appears as if you are building the module with an older gfortran and trying to use with a newer version.
Any progress on this PR? or should it be closed at WORKSFORME?
The module file you are trying to read was produced from a version of gfortran <= 4.3, at a time when module files were not versioned. Module files are not necessarily (I'd even go as far as to say: not usually) portable between different major gfortran versions. Recent versions of the compiler give a better error, indicating that the cause is a mismatch between compiler version that produced the module file, and current compiler.
there is actually some recent change that causes similar behavior: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59276