Using g77 to compile Fortran library on 64bit system


I've encountered a problem compiling a library written in Fortran and C on a 64bit system. I've tested the library on a 32bit system and it is running fine, so the problem must be with how I compile it on a 64bit system, details: gcc 3.4.5 Suse 9.

The flags used to compile on 32 bit system are:

#gcc flags
#g77 flags

I have modified it for 64bit compilation by adding

-m64 to both CFLAGS and FFLAGS, the library still compiles but calls to some of its functions result in Segmentation fault.

After some playing around I discovered that adding an additional optimization flag -O3 solves some of the problems, that is some functions begin to work but eventually the thing still crashes.

If anyone can provide a proper procedure to compile under 64bit system that would help a lot.

Thank you!

Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

There could be some 32-bit dependencies in the original code.  For example if some variables are declared as INTEGER * 4 in one common block, but as INTEGER in a supposedly parallel block, then the code would compile and work fine if the default integer is 32 bits, but will cause major kabooms if INTEGER becomes 64 bits.  

I'd look over all the parameters and common blocks to see if there might be some mismatches.

Also be wary of any library routines or precompiled routines you call-- they all have to be 64-bit compatible.


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
alex123Author Commented:
grg9 thank you!

I have a followup question to the original one. It seems that even on a 64bit system fortran's INTEGER type remains INTEGER*4 and not INTEGER*8. The library I am compiling might be suffering from this since it intefraces with some C code of its own and because of this the types passed between C and Fortran code no longer match. For my purposes I would also prefer to have all INTEGER types be equivalent to INTEGER*8. It there any way to force g77 to compile the library with INTEGER=INTEGER*8 instead of INTEGER*4?

Thank you
>It there any way to force g77 to compile the library with INTEGER=INTEGER*8 instead of INTEGER*4?

I don't see any option for that!  

You may be able to do it by adding IMPLICIT INTEGER * 8 ( I-N )  everywhere.

It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Programming Languages-Other

From novice to tech pro — start learning today.

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.