delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2005/03/09/15:01:33

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Date: Wed, 9 Mar 2005 15:01:12 -0500
From: Christopher Faylor <cgf-no-personal-reply-please AT cygwin DOT com>
To: cygwin AT cygwin DOT com
Subject: Re: req: using cygwin's gcc for creating static libs in msvc binary format (.a => .lib) # Re: static MSVC library?
Message-ID: <20050309200112.GA17199@gully.bosbc.com>
Reply-To: cygwin AT cygwin DOT com
References: <20050309173223 DOT 505222101B7 AT warserver DOT warande DOT net> <20050309173442 DOT GB16830 AT gully DOT bosbc DOT com> <422F4DBA DOT 7020501 AT buddydog DOT org>
Mime-Version: 1.0
In-Reply-To: <422F4DBA.7020501@buddydog.org>
User-Agent: Mutt/1.5.6i

On Wed, Mar 09, 2005 at 02:25:46PM -0500, Jonathan Arnold wrote:
>Christopher Faylor wrote:
>>On Wed, Mar 09, 2005 at 06:32:09PM +0100, Arend-Jan Westhoff wrote:
>>
>>>It looks like changing a lib.a into a lib.lib might require only a rename!
>>>(But I remember reading that debug formats differ between gcc and VC.)
>>
>>You're right.  The only difference is the debug info.  A cygwin .a file is
>>roughly the same thing as a MSVC .lib file.
>>
>>But, of course, that was true back in 1999, too.
>
>Yes, just because the *format* is the same doesn't mean you can use a
>LIB (or OBJ) file generated by one compiler when using another linker.
>In fact, I'd be willing to bet dollars to donuts that it cannot be
>done.

Mmm... Donuts.

>This is due to lots of things, not the least of which is naming
>conventions, stack usage, and internal structure differences.  Static
>libs are not, and never will be, cross-compiler, unless there is a
>specific switch in a compiler that says "Generate VC++ compatible
>object information" or some such.

You seem to be speaking pretty forcefully for someone who doesn't know
if there is a "specific switch...  or some such".

I'll just reiterate what I said.

A foo.lib can be used interchangeably with a libfoo.a file.  Except
for the well-documented and frequently repeated problems with C++
name mangling, and the even more repeated problems with mixing
the cygwin and msvcrt runtime libraries, there should be no problems
with using a .lib file on the gcc command line or a .a file on the
"cl" command line.

In fact, I just tried it.  I created two MSVC object files, put them
in a .lib, and linked them with a program that I compiled using
gcc -mno-cygwin.

Then I put the same two files in a ".a" and linked them using "cl".  You
will have to play around with the right libraries required to satisfy
things that mingw adds to an object file if you want to use msdev for
linking but this is not an insurmountable problem.

Getting this working with object files compiled without -mno-cygwin
would be tricky (and maybe even not possible) but it's certainly
possible to use msvc created .lib files with gcc and gcc/ar created .a
files with msvc.

--
Christopher Faylor			spammer? ->	aaaspam AT sourceware DOT org
Cygwin Co-Project Leader				aaaspam AT duffek DOT com
TimeSys, Inc.

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


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