On Sun, 29 Jun 2003, x z wrote:
> A short answer is: One should not worry about this (i.e. different
> numbers of underscores in the function names) if he uses the compiler
> consistently. That is, if he used gcc to build LAM and used gcc as the
> underlying compiler for mpicc, that's OK, even though the number of
> underscores in the name of the functions in the library is different
> from that when he used Sun's cc to build LAM. And similarly, if one
> used Sun cc to build LAM, he should use Sun cc to be the underlying
> compiler, and needs not worry about the different number of underscores
> appearing in the function names than when he used gcc to build LAM.
This is correct.
The answer is because different Fortran compilers use different "name
mangling" schemes to represent their symbols in object files. The Sun
compiler makes the names lower case and adds a single underscore. The GNU
compiler makes the names lower case and adds a double underscore. Others
do different things. LAM/MPI figures out the convention of your fortran
compiler during ./configure and sets itself up to work with that fortran
compiler.
So as you surmised, the moral of the story here is: always stick with the
compiler that you configured/compiled LAM/MPI with, and you'll be fine.
Also, a very important issue: LAM/MPI is source code compatible between
versions. It makes no guarantees about being binary code compatible.
Hence, attempting to run MPI applications compiled under one version of
LAM/MPI (e.g., 6.3.x) in a different version's run-time environment (e.g.,
6.5.x.) will likely *not* work (and vice versa).
--
{+} Jeff Squyres
{+} jsquyres_at_[hidden]
{+} http://www.lam-mpi.org/
|