Linking with Fortran

Hello,

I've ran into a problem linking C++ code with code calling functions from a Fortran compiled library.

I have
1. precompiled binary called glib.o which connects to a Fortran library
2. a small piece of C++ code called reader.cc which calls functions from glib.o

If I compile like this it works fine

g77 reader.cc glib.o -lf2c -lm -lgribexR64 -lstdc++

however if I change it to

g++ reader.cc glib.o -lf2c -lm -lgribexR64

it fails and outputs linker errors all which look like

/usr/local/lib64/libgribexR64.a(grsdef.o)(.text+0xbc): In function `grsdef_':
: undefined reference to `G77_getenv_0'
/usr/local/lib64/libgribexR64.a(grsdef.o)(.text+0x16c): In function `grsdef_':
: undefined reference to `G77_getenv_0'

It appears that the reason for this is that when I compile with g77 I include the standard C++ library however when I compile with g++ I don't include its fortran equivalent. If someone could provide the necessary library or some other way of compiling this using g++ and not g77 it would be very helpful.

Thank you,

Alex
alex123Asked:
Who is Participating?
 
DeanHorakCommented:
Try changing the fortran runtime library name - this was changed in later versions of the GNU toolset

i.e. change
g++ reader.cc glib.o -lf2c -lm -lgribexR64
to
g++ reader.cc glib.o -lg2c -lm -lgribexR64
0
 
alex123Author Commented:
Forgot to mention I am using gcc 3.4.5 on Suse9, Intel 64bit CPU
0
 
alex123Author Commented:
Thank you! This did it.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.