
Small, Freestanding Windows Executables (2016) - peter_d_sherman
https://nullprogram.com/blog/2016/01/31/
======
peter_d_sherman
Excerpt:

"My usual go to for C/C++ on Windows is Mingw-w64, which has greatly suited my
needs the past couple of years. It’s packaged on Debian, and, when combined
with Wine, allows me to fully develop Windows applications on Linux. Being
GCC, it’s also great for cross-platform development since it’s essentially the
same compiler as the other platforms. The primary difference is the interface
to the operating system (POSIX vs. Win32).

However, _it has one glaring flaw inherited from MinGW: it links against
msvcrt.dll_ , an ancient version of the Microsoft C runtime library that
currently ships with Windows. Besides being dated and quirky, it’s not an
official part of Windows and never has been, despite its inclusion with every
release since Windows 95. Mingw-w64 doesn’t have a C library of its own,
instead patching over some of the flaws of msvcrt.dll and linking against it.

Since so much depends on msvcrt.dll despite its unofficial nature, it’s
unlikely Microsoft will ever drop it from future releases of Windows.
_However, if strict correctness is a concern, we must ask Mingw-w64 not to
link against it_. An alternative would be PlibC, though the LGPL licensing is
unfortunate. Another is Cygwin, which is a very complete POSIX environment,
but is heavy and GPL-encumbered.

Sometimes I’d prefer to be more direct: skip the C library altogether and talk
directly to the operating system. On Windows that’s the Win32 API. Ultimately
I want a tiny, standalone .exe that only links against system DLLs."

