From: "s.ross" Date: 2008-01-03T02:46:00+09:00 Subject: Re: Windows Compilation Madness On Jan 2, 2008, at 9:02 AM, Gary Wright wrote: > Unlink Linux (and *BSD, Mac OS X...), Windows does not come packaged > with a development environment and in fact there are multiple > mutually-incompatible development environments (Cygwin, MinGW, VC6, > VC8). For the most part you can not mix-and-match object code (dlls) > created by these different environments with the biggest problem > being that there is no common memory allocation library. Confirmed that Windows does not come with a dev environment. But neither do *nix. They rely on your text editor of choice and gcc (usually). IIRC, there are command-line tools that come with the .Net framework if you know how to use them. csc.exe is the c# compiler, although, IIRC, that compiles to the CLR. > I assume this is why some Windows software comes distributed with > its own collection of 'standard' dlls compiled in the same > development environment as the underlying application. No. Most software comes with DLLs because they load lazily, providing the perception of quicker application startup. Also, DLLs can be upgraded without a reinstallation of the entire application and shared among other applications on the system. For example, MSXML and MSHTML are packaged as DLLs and can be readily used by anyone who wants them. > The end result is that the least-common-denominator for all these > environments is source code, which still requires the 'end-user' to > install a development environment of some sort and to manage the > compile/link process for Ruby and for any and all 3rd party > libraries/gems/extensions that they need. Yes, although I might disagree somewhat with the LCD issue. Many who package DLLs simply version them as new compiler versions come out so the correct version can be imported. > I also gather that each of those environments has very different > build utilities (the Windows equivalent of make, config, autoconf, > and so on). For an extension writer, the problem is that they can't > really know what the build process is going to look like on an > arbitrary Windows system making it very difficult to even distribute > source packages. No. It's so totally unlike *nix that you don't get squat except nmake, which is a capable version of make. It's been around since the early 90s. Configuration is less of an issue than on *nix because you don't have to ask as many questions about the distro -- there are givens about a Windows installation that you don't have on *nix. That essentially takes autoconf and config out of the mix. Look, Windows dev is a whole different world. The knowledge transfers, but not absolutely 1:1. > So am I hot or cold in understanding the Windows situation? Lukewarm. The CLR is one of the sticking points. There doesn't seem to be a c or c++ compiler that ship standard with Windows that compile to native code. That's kind of a bummer.