This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: gcc -Wl,--subsystem,windows -mwindows options
- From: Ian Lance Taylor <ian at wasabisystems dot com>
- To: "Glenn A. Carlson, P.E." <gcarlson at xannah dot org>
- Cc: <gcc-help at gcc dot gnu dot org>
- Date: 24 Jan 2004 14:18:42 -0500
- Subject: Re: gcc -Wl,--subsystem,windows -mwindows options
- References: <000501c3e29b$089cae00$1433b8cc@computer>
"Glenn A. Carlson, P.E." <gcarlson@xannah.org> writes:
> -Wl,--subsystem,windows -mwindows
>
> What exactly do these gcc options do? Are they preprocessor, compiler, or
> linker options? Sometimes I only need -windows; sometimes I need both. How
> do I know when I will need both or just -mwindows?
As you discovered, -Wl,--subsystem,windows passes `--subsystem
windows' to the linker. -mwindows is a compiler option; however, it's
only affect is on the options which the compiler passes to the
linker.
For the linker, --subsystem is documented in the linker manual as
follows:
@kindex --subsystem
@item --subsystem @var{which}
@itemx --subsystem @var{which}:@var{major}
@itemx --subsystem @var{which}:@var{major}.@var{minor}
Specifies the subsystem under which your program will execute. The
legal values for @var{which} are @code{native}, @code{windows},
@code{console}, and @code{posix}. You may optionally set the
subsystem version also.
[This option is specific to the i386 PE targeted port of the linker]
Admittedly that is not particularly informative. As far as I can see
from the code, the effect is to set the entry point to
WinMainCRTStartup, and to set the symbol __subsystem__ to 2.
Presumably this is something the Microsoft linker also does.
For the compiler, from the source code, the effect of -mwindows is to
add -lgdi32 and -lcomdlg32 to the list of default libraries (the uwin
target also adds -luser32), and to pass --subsystem windows to the
linker.
So it seems that if you use -mwindows you shouldn't need to also use
-Wl,--subsystem,windows, since that will happen anyhow, at least for
the cygwin, mingw32, and uwin targets.
Ian