c++ and -mno-cygwin

Bernard DAUTREVAUX b.dautrevaux@usa.net
Wed Dec 23 20:10:00 GMT 1998

> -----Original Message-----
> From:	Serguei DACHIAN [SMTP:Serguei.Dachian@univ-lemans.fr]
> Sent:	Wednesday, December 23, 1998 03:38
> To:	gnu-win32@cygnus.com
> Subject:	c++ and -mno-cygwin
> Hi everybody.
> Trying to compiling the simplest c++ program "Hello world"
>  > #include <iostream.h>
>  >
>  > int main ()
>  > {
>  >    cout << "Hello world." << endl;
>  >    return 0;
>  > }
> with the flag "-mno-cygwin" (just lile "g++ -mno-cygwin hello.cpp") fails
> with lots of undefined references in "libstdc++.a".  Apparently it is
> impossible to use this flag with g++/c++, but only with gcc.  Is it a bug or
> an intention??? Is there any workarround [ except rewriting the program in C
> :-))) ].

Hi, Serguei

You just ran into the most annoying (although curable) problem of CygWin-B20.1: 
there is a -mno-cygwin switch that correctly select Mingw32 header files 
(warning: this was not true with B20; you need B20.1) and do not link in 
libcygwin.a, so that your program will not need cygwin.dll.

HOWEVER, the other libXXX.a that you will link with may need cygwin.dll! the 
-mno-cygwin flag should select another set of libraries compiled also with the 
-mno-cygwin flag set. The problem is that these libraries are not provided, 
neither do gcc look in another directory when -mno-cygwin is given at link time 
(it only do not pass -lcygwin to the linker).

You could patch the specs file so that -mno-cygwin will look in other 
directories if you have specified -mno-cygwin, or simply add a -L switch to 
select this directory.

Now you must got the Mingw32-egcs-1.1 package (from Mumit site I think; there 
used to be a version at 
" ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/egcs-1.1/egcs-1.1-mi  
ngw32.zip" but I don't know if its up to date) to have the correct libraries 
and that should work fine: the libstdc++ there (as well as libmoldnames and 
others) are compiled to look in CRTDLL instead of CYGWIN.DLL...

If you download using th elink above, you will get the full egcs-1.1 mingw32 
compiler (to be used with B19 I think); just extract the libraries and place 
them in some convenient place and you should be working OK. I used to work this 
way, but now I've recompiled the libraries I need in my environment (I need to 
use MSVCRT.dll instead of CRTDLL.dll as Mumit binaries do, and I had to patch a 
bit some code), so I'm not sure if you can still use the header files from 
B20.1 or need to also use Mumit's header files from the same .zip as the 



PS: Cygwin maintainers, could you please provide not only Mingw32 headers but 
also the corresponding libraries, and allow to select between CRTDLL and MSVCRT 
by some switch in the compiler (personally I've patched the specs file to 
create a -use-msvcrt flag for this); there's already some support built in the 
header files and a lot of people would be pleased to be able to use MSVCRT, 
which does not have some of the annoying MSDOS limitations, like truncating the 
total command-line+environment passed to a subprocess at 1024 bytes!).

This would avoid some traffic on the mailing list and some headaches to a lot 
of people (mainly on undefined symbols at link but also, and that's weirder, 
hard to understand crashes when there is some DLL conflicts).

> Thanks in advance for any help.
> Serguei.
> ___________________________________________________________________________
> Serguei DACHIAN
> Laboratoire de Statistique et Processus,
> Universite du Maine, Av. Olivier Messiaen
> 72085 Le Mans CEDEX 9, FRANCE
> Tel.   : +33 (0)2 43 83 37 18
> Fax.   : +33 (0)2 43 83 35 79
> E-mail : Serguei.Dachian@univ-lemans.fr
> WWW    : http://www.univ-lemans.fr/sciences/statist/cvs/thesard.html#dachian
> -
> For help on using this list (especially unsubscribing), send a message to
> "gnu-win32-request@cygnus.com" with one line of text: "help"

Bernard Dautrevaux
Microprocess Ingéniérie
97 bis, rue de Colombes
Tel: +33 (0) 1 47 68 80 80
Fax: +33 (0) 1 47 88 97 85
e-mail: b. dautrevaux@usa.net

For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".

More information about the Cygwin mailing list