delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/1999/05/10/13:01:58

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
Sender: cygwin-owner AT sourceware DOT cygnus DOT com
Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com
Date: Mon, 10 May 1999 17:41:31 +0100 (BST)
From: "J.C. Ng" <j DOT c DOT ng AT ic DOT ac DOT uk>
To: Mumit Khan <khan AT xraylith DOT wisc DOT edu>
cc: "J.C. Ng" <j DOT c DOT ng AT ic DOT ac DOT uk>, cygwin AT sourceware DOT cygnus DOT com
Subject: Re: No underscore option for g77 or f77
In-Reply-To: <Pine.SUN.3.93.990510112134.14165I-100000@modi.xraylith.wisc.edu>
Message-ID: <Pine.SGI.3.96.990510174007.26061A-100000@buccaneer.ae.ic.ac.uk>
MIME-Version: 1.0

Thanks for the info.
Actually it is gcc/g++ which appends the underscore to the front of the
symbols within the libray. And this mucks up the compilation of my
executable. How can I disable this? 

On Mon, 10 May 1999, Mumit Khan wrote:

> On Mon, 10 May 1999, J.C. Ng wrote:
> 
> > The library was compiled using egcs 1.1.2 in Cygwin. I used nm to check
> > the symbols within the library and all of them was prepended an
> > underscore.
> > Thanks for your help.
> 
> So you're trying to call g77 compiled routines from C/C++ and vice versa
> and running the "underscore issue". There is lots of info on the net on
> how to semi-portably do this, and I won't rehash that here. Here's a quick
> summary of what I do:
> 
> 1. at compile time (via configuration utility), check if the f77 compiler
>    tacks an underscore at the end. If so, define F77_APPEND_UNDERSCORE to
>    be 1, or else 0 (or undefine it).
> 
> 2. In C headers, when prototyping the functions, I use this macro to
>    declare the externals:
>      
>      #if F77_APPEND_UNDERSCORE
>      # define F77_FUNCTION(f) f##_
>      #else
>      # define F77_FUNCTION(f) f
>      #endif
> 
>      extern int F77_FUNCTION(f77func1) (int *, int *);
> 
>    or, if you want to define or undefine F77_UNDERSCORE (instead of giving
>    it a value),
> 
>      #if defined(F77_APPEND_UNDERSCORE)
>      # define F77_FUNCTION(f) f##_
>      #else
>      # define F77_FUNCTION(f) f
>      #endif
> 
>      extern int F77_FUNCTION(f77func1) (int *, int *);
> 
> You can simply build all your C code with -DF77_APPEND_UNDERSCORE=1 and
> you're all set.
> 
> G77, thanks to compatibility with f2c, has one more issue -- it appends
> *TWO* underscores if the name already has an underscore. Of course, names
> with underscores are not legal in f77, so f2c is free to do as it wishes.
> 
> There are good portability packages out there that may help. Lots of
> people use CFORTRAN, which is a terrific package that hides lots of this
> magic. You need to get version 3.5. Also search the mailing list for
> what else you may need.
> 
> Regards,
> Mumit
> 
> 
> 
> 
> --
> Want to unsubscribe from this list?
> Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com
> 


----------------------------------------------------------------------
Freddy Ng Jit Cheng

Singapore address : Blk 245 Hougang St. 22	Tel no. : 2875630
		    #14-147
		    Singapore 530245

London address : Basement Flat			Tel no. : 0171-5650155
		 144 Lexham Gardens
		 London W8 6JE

Homepage : http://www.geocities.com/sunsetstrip/5030

-----------------------------------------------------------------------


--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019