multiple definition of `MAIN__'
Fabian Braennstroem
f.braennstroem@gmx.de
Mon Dec 29 22:15:00 GMT 2003
On Mon, 2003-12-29 at 14:08, Toon Moene wrote:
> Fabian Braennstroem wrote:
> > Hello,
> >
> > I am still trying to adjust an sgi-fortran-code to linux g77. I get
> > this error-message:
> >
> > main.o(.text+0x10c3): In function `MAIN__':
> > : undefined reference to `save_vel__'
> > main.o(.text+0x10d2): In function `MAIN__':
> > : undefined reference to `save_pres__'
> > collect2: ld returned 1 exit status
> > make: *** [calc_les_03_cube] Error 1
> >
THAT is the correct error-message:
save_vel.o(.text+0xcd1): In function `MAIN__':
: multiple definition of `MAIN__'
main.o(.text+0x0): first defined here
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../../i686-pc-linux-gnu/bin/ld: Warning: size of symbol `MAIN__' changed from 5155 in main.o to 5 in save_vel.o
save_pres.o(.text+0x763): In function `MAIN__':
: multiple definition of `MAIN__'
main.o(.text+0x0): first defined here
collect2: ld returned 1 exit status
make: *** [calc_les_03_cube] Error 1
> Did you compile save_vel.f and save_pres.f with g77 as well ?
>
> Note that g77 appends two underscores to the name of a subroutine that
> contains an underscore.
>
> If you just assume the loader will get save_vel and save_pres from a
> library compiled with another compiler that doesn't append the extra
> underscore, you're out of luck.
>
> Anyways, don't assume g77-compiled code and code compiled with another
> compiler on your SGI machine will work together flawlessly, even if the
> loader phase succeeds ...
>
Thanks for the tips, but all subroutines were compiled with g77 under
linux.
When I copy the subroutine save_vel into 'main.f', the compilation works
fine. Why? Is it a 'makefile'-mistake?
Greetings!
Fabian
More information about the Gcc-help
mailing list