We help IT Professionals succeed at work.

We've partnered with Certified Experts, Carl Webster and Richard Faulkner, to bring you two Citrix podcasts. Learn about 2020 trends and get answers to your biggest Citrix questions!Listen Now

x

Using g77 to compile Fortran library on 64bit system

alex123
alex123 asked
on
Medium Priority
2,253 Views
Last Modified: 2013-11-08
Hello,

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:

LARGE_FILE = -Dlinux -DFOPEN64
DEBUG =
#gcc flags
CFLAGS  = $(DEBUG) -DREAL_8 -DTABLE_PATH=\"emos\" $(LOCAL_CFLAGS) $(LARGE_FILE)
#g77 flags
FFLAGS = $(DEBUG) -fno-second-underscore -Dlinux -DUSE_NO_POINTERS -DREAL_8 -DREAL_BIGGER_THAN_INTEGER -DTABLE_PATH=\"emos\"

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!

Alex
Comment
Watch Question

Commented:
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.

Not the solution you were looking for? Getting a personalized solution is easy.

Ask the Experts

Author

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

Commented:
>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.

Access more of Experts Exchange with a free account
Thanks for using Experts Exchange.

Create a free account to continue.

Limited access with a free account allows you to:

  • View three pieces of content (articles, solutions, posts, and videos)
  • Ask the experts questions (counted toward content limit)
  • Customize your dashboard and profile

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.