This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: req: using cygwin's gcc for creating static libs in msvc binary format (.a => .lib) # Re: static MSVC library?


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@sourceware.org
Cygwin Co-Project Leader				aaaspam@duffek.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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]