linking files compiled with older gfortran
Tobias Burnus
burnus@net-b.de
Mon Jun 15 18:44:00 GMT 2009
kamaraju kusumanchi wrote:
> I have previously compiled a bunch of libraries (fftw3, blas, lapack,
> lapack95, mpich2, openmpi etc.,) using gfortran 4.3.2. However, due to
> a bug fixed in gfortran 4.4.0
> http://gcc.gnu.org/ml/fortran/2009-06/msg00116.html I now want to
> upgrade to gfortran 4.4.0 . My question is that should I recompile all
> these libraries again? or will they work just fine? How good is the
> gfortran's backward compatibility?
>
The libgfortran library which ships with GCC 4.4.x is backward
compatible with programs/libraries compiled with GCC 4.3.x and the
library which comes with the current developer version "4.5.0
(experimental)" is compatible with GCC 4.3 and 4.4 compiled
programs/libraries. Thus there is no need to recompile your libraries.
Note of warning: GCC 4.5 is a developer release and there are plans to
restructure the array descriptor (dope vector) during the 4.5 cycle (or
during 4.6 if we don't manage). If that happens, there will be an
incompatibility between 4.3.x/4.4.x and 4.5-before-change on one hand
and 4.5-after-change on the other hand. As the library version number
will then be bumped as well, the incompatibilities will show up at link
time (link error).
There are several reasons for changing the array descriptor: The changes
are needed for some special cases in Fortran 90/95, for Fortran 2003 and
Fortran 2008 (e.g. rank > 7 arrays, coarrays). Thus the change is
inevitable. As arrays are at the heart of the gfortran library, one
would need to replicate about 40% of the library in order to remain
backward compatible. Due to the named symbols (on systems supporting
it), it would be possible, but it seems to be a rather large burden.
Therefore, current idea is to break the ABI compatibility between 4.4
and 4.5.0-release [or if we don't manage time wise: between 4.5 and 4.6].
Tobias
More information about the Fortran
mailing list