From: Steve D. P. <ste...@us...> - 2001-08-27 19:41:22
|
Update of /cvsroot/mingw/htdocs In directory usw-pr-cvs1:/tmp/cvs-serv21331 Modified Files: docs.shtml download.shtml history.shtml index.shtml licensing.shtml links.shtml lists.shtml mingw-oldfaq.shtml mingwfaq.shtml mirrors.shtml news.shtml ported.shtml who.shtml Log Message: Reached a milestone status with consolidation of FAQ's, overhauled the content on the "Download" and "Documentation" pages to be relevant, performed some minor housecleaning with CVS Id tags on all pages. Index: docs.shtml =================================================================== RCS file: /cvsroot/mingw/htdocs/docs.shtml,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** docs.shtml 2001/08/22 04:41:13 1.14 --- docs.shtml 2001/08/27 19:41:19 1.15 *************** *** 1,2 **** --- 1,4 ---- + <!-- $Id$ --> + <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> *************** *** 27,157 **** <table border="0" cellspacing="6" cellpadding="0"> ! <tr> ! <td valign="top" align="left"> ! ! <p> ! There is precious little documentation at this point, and even that is ! scattered all over the place. We are looking for volunteers to work on ! documenting the various pieces. </p> ! ! <h2 align="left">MinGW Documentation</h2> ! ! <ul> ! <li> The ! <a href="mingwfaq.shtml">MinGW FAQ</a> is a ! good place to start. ! </li> ! <!-- ! This following section commented out 8/20/2001 by Steve D. Perkins. ! It's already intuitive enough that installation instructions are located ! on the "Download" page (which shouldn't have been named "faq.shtml" in ! the first place. It's already confusing enough that there are TWO faq's ! on the MinGW website... referring to the Downloads section as a "third faq" ! is perhaps getting out of hand ! <li> <a href="faq.shtml">Alternative FAQ</a> covers ! mostly installation procedure. ! </li> ! --> ! </ul> ! ! <h2 align="left">GNU Development Tools Documentation</h2> ! <ul> ! <li> <a href="/info/bfd/">GNU Binary File Descriptor library (BFD)</a></li> ! <li> <a href="/info/as/">GNU Assembler</a></li> ! <li> <a href="/info/gasp/">GNU Assembler Preprocessor</a></li> ! <li> <a href="/info/ld/">GNU Linker</a></li> ! <li> <a href="/info/binutils/">GNU Binutils</a></li> ! <li> <a href="http://gcc.gnu.org/onlinedocs/">GCC Manual</a>.</li> ! <li> <a href="http://www.delorie.com/gnu/docs/">GNU Documentation</a> for ! documentation on all GNU tools.</li> ! </ul> ! ! <h2 align="left">Windows32 API Documentation</h2> ! <p> ! MinGW uses the runtime libraries distributed with the OS, but ! the API documentation is not supplied with the OS and is not re-distributable. ! If you don't own a copy of Microsoft development tools or MSDN subscription, ! you can still access the API documentation from the following places: ! </p> ! <ul> ! <li> <a href="http://msdn.microsoft.com/">Microsoft's on-line library</a>.</li> ! <li> <a href="ftp://ftp.cs.virginia.edu/pub/lcc-win32/win32hlp.exe"> ! Windows API documentation</a> (size: 12.8MB last updated: Tuesday, ! 09-Nov-1999 05:15:06 EST). Thanks to Jacob Navia for his persistence ! in getting Microsoft to grant him permission to redistribute this.</li> ! <li> <a href="ftp://ftp.funet.fi/pub/win-nt/win32-api/">Win32 API ! documentation in WinHelp format (6MB)</a>. It is a help file released ! by Microsoft in 1992 to show the differences between the Windows 3.1 ! and the Win32 APIs.</li> ! <li> <a href="ftp://ftp.borland.com/pub/delphi/techpubs/delphi2/win32.zip"> ! WIN32.ZIP (7.9MB)</a> contains Borland/Inprise API docs for Delphi. Note ! that this only contains the Windows32 API documentation, but not the ! C runtime library documentation.</li> ! </ul> ! </li> ! </ul> ! ! <h2 align="left">Tips, Howtos, Contributed Documentation, etc.</h2> ! ! <h3> ! Introductions and Tutorials ! </h3> ! <ul> ! <li> Colin Peters' tutorial on ! <a href="http://webclub.kcom.ne.jp/ma/colinp/win32/index.html"> ! Win32 Programming with GNU Tools Tutorial</a>.</li> ! <li> <a href="http://www.nanotech.wisc.edu/~khan/software/gnu-win32/dllhelpers.html"> ! How to make DLLs using GCC</a><br /> A set of helper programs and examples to ! make DLLs in C, C++ and F77 using gcc on Mingw and Cygwin. Released v0.2.5 ! on Mar 13, 1999. Also contains some pointers to DLL related information ! available from Microsoft's on-line archives. The next release, currently in ! beta, will create DLLs using a much more straight forward way.</li> ! </ul> ! <h3> ! Developing Modules for Specific Software Packages ! </h3> ! <ul> ! <li> <b>Want to build Java JNI's with GNU compilers</b>? Might want to look ! at the ! <a href="http://www.xraylith.wisc.edu/~khan/software/gnu-win32/README.jni.txt"> ! README.jni</a> file first, and download ! <a href="ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/misc/java-jni-examples.zip"> ! java-jni-examples.zip</a>. Updated: April 22, 1999.</li> ! <li> <b>Want to build Excel-callable DLLs with GNU compilers</b>? ! Might want to look at the ! <a href="http://www.xraylith.wisc.edu/~khan/software/gnu-win32/README.excel-dlls.txt"> ! README.excel-dlls</a> file first, and then download ! <a href="ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/misc/excel-dlls.zip"> ! excel-dlls.zip</a>.</li> ! <li> <b>Want to build Netscape Client Plug-ins with GNU compilers</b>? ! Might want to look at the ! <a href="http://www.xraylith.wisc.edu/~khan/software/gnu-win32/README.nsplugin.txt"> ! README.nsplugin</a> file first, and then download ! <a href="ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/misc/nsplugin-examples.zip"> ! nsplugin-examples.zip</a>. April 8, 1999.</li> ! </ul> ! <h3> ! Cross-compilation and Using with Other Tools ! </h3> ! <ul> ! <li> <b>-mno-cygwin</b>: Building Mingw executables using Cygwin.<br /> Some ! <a href="http://www.nanotech.wisc.edu/~khan/software/gnu-win32/mno-cygwin-howto.txt"> ! insights and recommendations</a> on building Mingw applications using the ! Cygwin development tools.</li> ! <li> <a href="http://www.xraylith.wisc.edu/~khan/software/gnu-win32/mingw-cross-howto.txt"> ! Build cross compiler for MinGW</a><br /> ! Instructions on how to build cross and Canadian-cross development tools ! for MinGW. Feb 17, 1999.</li> ! </ul> ! <p></p> ! <!-- <hr noshade="noshade" size="1" /> --> ! </td></tr></table> - <!-- Close page table --> </td></tr></table> --- 29,455 ---- <table border="0" cellspacing="6" cellpadding="0"> ! <tr> ! <td valign="top" align="left"> ! <a name="index" /> ! <h2 align="left">Table of Contents</h2> ! <ul> ! <li><a href="#installation">Installing MinGW</a></li> ! <li><a href="#compilingandbuilding">Compiling and Building with MinGW</a></li> ! <li><a href="#gnutools">GNU Tools Documentation</a></li> ! <li><a href="#win32api">Win32 API Documentation</a></li> ! <li><a href="#etc">Tips, Howtos, Contributed Documentation, etc.</a></li> ! </ul> ! <hr /> ! <a name="installation"></a> ! <h2 align="left">Installing MinGW</h2> ! <p> ! For now, installation information can be found on the ! <a href="download.shtml">Download</a> page. ! </p> ! <p><a href="#index">Back to index</a></p> ! <hr /> ! <a name="compilingandbuilding"></a> ! <h2 align="left">Compiling and Building with MinGW</h2> ! <ul> ! <li> ! <h3>How to create a console application</h3></a> ! <p> ! Here's an example. The following is a code sample for a simple C program. Cut ! and paste it into a file named hello.c to try it out. ! </p> ! <pre> ! #include <stdio.h> + int main(int argc, char **argv) + { + printf ("Hello\n"); + return (0); + } + </pre> + If you want to create a console mode executable hello.exe + from a c file called hello.c, try the following: + <pre> + gcc -c hello.c + </pre> + This compiles hello.c into an object file, hello.o + <pre> + gcc -o hello hello.o + </pre> + This creates an executable hello.exe from hello.o. Alternatively, you can compile + and link in one step using: + <pre> + gcc -o hello hello.c + </pre> + <p> + The following is a code sample for a simple C++ program. Cut and paste it into + a file named hello.cpp to try it out. + </p> + <pre> + #include <iostream> + int main(int argc, char **argv) + { + cout << "Hello" << endl; + return (0); + } + </pre> + <p> + For the C++ program, use the following to compile and link: + </p> + <pre> + g++ -c hello.cpp + g++ -o hello hello.o + </pre> + </li> + <li> + <h3>How to create a windows application?</h3> + <p> + Here's an example. The following is a code sample for a simple + Windows program. Cut and paste it into a file named hello.c to try it out. + </p> + <pre> + #include <windows.h> ! int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) ! { ! MessageBox (NULL, "Hello", "Hello Demo", MB_OK); ! return (0); ! } ! </pre> ! <p> ! If you want to create a Windows executable hello.exe, from a c file called ! hello.c, try the following: ! </p> ! <pre> ! gcc -c hello.c ! </pre> ! This compiles hello.c into an object file, hello.o ! <pre> ! gcc -o hello hello.o -mwindows ! </pre> ! This creates an executable hello.exe from hello.o ! The <code>-mwindows</code> switch is needed to create Windows executables ! instead of console applications. It assures the appropriate Windows libraries ! are linked in for you. To get a console screen along with a standard windows ! application, add the <code>-mconsole</code> flag as well as <code>-mwindows</code>. ! <p> ! If you have resources from a resource file (.rc) that also need ! to be added to your executable, you'll need to compile the resource ! file as well as your other source files and include the compiled resources ! when linking to create the executable. Here's an example that shows how to ! compile and link in a resource file named resfile.rc. ! </p> ! <pre> ! windres -o resfile.o resfile.rc ! gcc -o hello hello.o resfile.o -mwindows ! </pre> ! </li> ! <li> ! <h3>How to create a dll</h3> ! <p> ! Here's an example. Cut and paste the following into a file ! named dllfct.h: ! </p> ! <pre> ! #ifdef BUILD_DLL ! // the dll exports ! #define EXPORT __declspec(dllexport) ! #else ! // the exe imports ! #define EXPORT __declspec(dllimport) ! #endif ! // function to be imported/exported ! EXPORT void tstfunc (void); ! </pre> ! <p> ! Cut and paste the following into a file named dllfct.c: ! </p> ! <pre> ! #include <stdio.h> ! #include "dllfct.h" ! EXPORT void tstfunc (void) ! { ! printf ("Hello\n"); ! } ! </pre> ! <p> ! Cut and paste the following into a file named hello.c: ! </p> ! <pre> ! #include "dllfct.h" ! int main () ! { ! tstfunc (); ! return (0); ! } ! </pre> ! <p> ! To create the dll and an executable that uses it, try the following: ! </p> ! <pre> ! gcc -c hello.c ! gcc -c -DBUILD_DLL dllfct.c ! dllwrap --output-lib=libtstdll.a --dllname=tst.dll --driver-name=gcc dllfct.o ! gcc -o hello.exe hello.o -L./ -ltstdll ! </pre> ! <p> ! For more information on dlls, see ! <a href="http://www.nanotech.wisc.edu/%7Ekhan/software/gnu-win32/dllhelpers.html"> ! http://www.nanotech.wisc.edu/~khan/software/gnu-win32/dllhelpers.html</a> ! </p> ! </li> ! <li> ! <h3>How to create a def file for a dll</h3> ! <p> ! There are several methods that can be tried in order to create a definition file ! (.def) when one is not supplied. ! </p> ! <ul> ! <li> ! One option is the tool, pexports. A version is available from ! <a href="http://www.is.lg.ua/~paul/devel/binutils.html"> ! http://www.is.lg.ua/~paul/devel/binutils.html</a>. ! Another version is available from Anders Norlander's MinGW page listed ! in the Other resources section. If your dll has functions that use ! the Pascal calling convention, you'll need to use the <code>-o</code> option. ! </li> ! <li> ! Another option is the tool, ! <a href="http://www.geocities.com/Tokyo/Towers/6162/impdef.zip">impdef</a>. ! More instructions on how to create def files from dlls, a copy of impdef and ! more information on how to use it are available at Colin Peters' site. ! See the <a href="#tutorials">Tutorials</a> section. ! Other compilers may also supply versions of the impdef program that ! can be used to create a .def file which will work with any compiler. If you ! have another version of impdef from another compiler, you may wish to try it. ! Some handle the Pascal calling convention better than others. Borland has ! a version of impdef and other compiler utilities available for download at their ! Borland Community web site. Their Borland C++ version 5.5 compiler includes several ! utilities to help convert between standard formats, their formats and Microsoft's ! formats. ! </li> ! <li> ! Another option is to use nm which comes with the MinGW distribution. ! This option will not work for all dlls. Problems may occur if the dll is stripped or ! compiled as 16 bit. To use this technique, you'll need to filter the output from nm to ! create a def file. This can be done by hand in an editor or automated using tools like ! Perl (Practical Extraction and Report Language) or grep (global regular expression print) ! and sed (stream editor). Even with the automated methods, you may have to ! make some changes by hand if the Pascal calling convention is used by the dll. ! See Colin Peters' site for more details on this case. ! (Versions of sed and grep are available from various sites ! including archives that host gnuish MSDOS and archives such as Virtually Un*x that contain ! Win32 ports of common Unix tools and from the self-hosting MinGW port distribution. The ! ActiveState version of Perl works well on Win32 platforms.) ! Here are examples of possible filtering techniques. ! <ul> ! <li> ! <p> ! This example uses grep and sed. If you have a dll named file.dll that you wish ! to create a def file for named file.def, try the following: ! </p> ! <pre> ! echo EXPORTS > file.def ! nm file.dll | grep ' T _' | sed 's/.* T _//' >> file.def ! </pre> ! <p> ! To create a library file named file.a from the dll and def file, type: ! </p> ! <pre> ! dlltool --def file.def --dllname file.dll --output-lib file.a ! </pre> ! </li> ! <li> ! <p> ! This example uses Perl. Copy the following Perl script ! to a file called dll.pl and use it: ! </p> ! <pre> ! open (OUTFILE,">dll.def"); ! print OUTFILE "EXPORTS\n"; ! open (INFILE,"dll.fil"); ! while(<INFILE>) ! { ! if ($_ =~ /T _/) ! { ! $line = $_; ! $line =~ s/.* T _//; ! print OUTFILE $line; ! } ! } ! close (INFILE); ! close (OUTFILE); ! </pre> ! <p> ! If you have a dll file named file.dll. At the command line, type: ! </p> ! <pre> ! nm file.dll > dll.fil ! perl dll.pl ! </pre> ! <p> ! A def file named dll.def will be created. You can rename this ! as needed. You'll also probably want to delete dll.fil when you're finished ! with this process. ! </p> ! </li> ! </ul> ! <li> ! <p> ! If you don't have any of these tools on your system, you can still use nm ! to create a def file and edit it by hand through an editor. For example: ! </p> ! <pre> ! nm file.dll > dll.fil ! find " T _" dll.fil > dll.def ! </pre> ! <p> ! Replace the line at the top of dll.def that was created by the find program ! and shows a file name with a line that says EXPORTS. Set your editor to search for ! <code>T _</code> and erase it and anything on the line before it, leaving ! only the routine names in the file. ! </p> ! </li> ! <li> ! If the previous options don't work, you can still try to create a def file ! using the output from the objdump program (from the MinGW distribution). ! Here's an example. ! <pre> ! objdump -p file.dll > dll.fil ! </pre> ! Search for <code>[Ordinal/Name Pointer] Table</code> in dll.fil and use the list ! of functions following it to create your def file. ! </li> ! </ul> ! </li> ! </li> ! <p><a href="#index">Back to index</a></p> ! </ul> ! <hr /> ! <a name="gnutools" /> ! <h2 align="left">GNU Development Tools Documentation</h2> ! <ul> ! <li><a href="/info/bfd/">GNU Binary File Descriptor library (BFD)</a></li> ! <li><a href="/info/as/">GNU Assembler</a></li> ! <li><a href="/info/gasp/">GNU Assembler Preprocessor</a></li> ! <li><a href="/info/ld/">GNU Linker</a></li> ! <li><a href="/info/binutils/">GNU Binutils</a></li> ! <li><a href="http://gcc.gnu.org/onlinedocs/">GCC Manual</a>.</li> ! <li> ! <a href="http://www.delorie.com/gnu/docs/">GNU Documentation</a> for ! documentation on all GNU tools. ! </li> ! <p><a href="#index">Back to index</a></p> ! </ul> ! <hr /> ! <a name="win32api" /> ! <h2 align="left">Win32 API Documentation</h2> ! <p> ! MinGW uses the runtime libraries distributed with the OS, but ! the API documentation is not supplied with the OS and is not re-distributable. ! If you don't own a copy of Microsoft development tools or MSDN subscription, ! you can still access the API documentation from the following places: ! </p> ! <ul> ! <li><a href="http://msdn.microsoft.com/">Microsoft's on-line library</a>.</li> ! <li> ! <a href="ftp://ftp.cs.virginia.edu/pub/lcc-win32/win32hlp.exe"> ! Windows API documentation</a> (size: 12.8MB last updated: Tuesday, ! 09-Nov-1999 05:15:06 EST). Thanks to Jacob Navia for his persistence ! in getting Microsoft to grant him permission to redistribute this. ! </li> ! <li> ! <a href="ftp://ftp.funet.fi/pub/win-nt/win32-api/">Win32 API ! documentation in WinHelp format (6MB)</a>. It is a help file released ! by Microsoft in 1992 to show the differences between the Windows 3.1 ! and the Win32 APIs. ! </li> ! <li> ! <a href="ftp://ftp.borland.com/pub/delphi/techpubs/delphi2/win32.zip"> ! WIN32.ZIP (7.9MB)</a> contains Borland/Inprise API docs for Delphi. Note ! that this only contains the Windows32 API documentation, but not the ! C runtime library documentation. ! </li> ! <p><a href="#index">Back to index</a></p> ! </ul> ! <hr /> ! <a name="etc" /> ! <h2 align="left">Tips, Howtos, Contributed Documentation, etc.</h2> ! <p> ! <font size="+1"><b>** NOTE ** </b></font><i> ! Some of the information in this section is grossly ! out of date, and currently here for historical purposes only. ! In particular, more recent and relevant information about "-mno-cygwin" ! and using MinGW within a Cygwin development environment can be found ! on the <a href="mingwfaq.shtml#faq-usingwithcygwin">FAQ</a> page.</i> ! </p> ! <ul> ! <li><h3>Introductions and Tutorials</h3></li> ! <ul> ! <li> ! Colin Peters' tutorial on ! <a href="http://webclub.kcom.ne.jp/ma/colinp/win32/index.html"> ! Win32 Programming with GNU Tools Tutorial</a>. ! </li> ! <li> ! <a href="http://www.nanotech.wisc.edu/~khan/software/gnu-win32/dllhelpers.html"> ! How to make DLLs using GCC</a><br /> A set of helper programs and examples to ! make DLLs in C, C++ and F77 using gcc on Mingw and Cygwin. Released v0.2.5 ! on Mar 13, 1999. Also contains some pointers to DLL related information ! available from Microsoft's on-line archives. The next release, currently in ! beta, will create DLLs using a much more straight forward way. ! </li> ! </ul> ! <li><h3>Developing Modules for Specific Software Packages</h3></li> ! <ul> ! <li> ! <b>Want to build Java JNI's with GNU compilers</b>? Might want to look ! at the ! <a href="http://www.xraylith.wisc.edu/~khan/software/gnu-win32/README.jni.txt"> ! README.jni</a> file first, and download ! <a href="ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/misc/java-jni-examples.zip"> ! java-jni-examples.zip</a>. Updated: April 22, 1999. ! </li> ! <li> ! <b>Want to build Excel-callable DLLs with GNU compilers</b>? ! Might want to look at the ! <a href="http://www.xraylith.wisc.edu/~khan/software/gnu-win32/README.excel-dlls.txt"> ! README.excel-dlls</a> file first, and then download ! <a href="ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/misc/excel-dlls.zip"> ! excel-dlls.zip</a>. ! </li> ! <li> ! <b>Want to build Netscape Client Plug-ins with GNU compilers</b>? ! Might want to look at the ! <a href="http://www.xraylith.wisc.edu/~khan/software/gnu-win32/README.nsplugin.txt"> ! README.nsplugin</a> file first, and then download ! <a href="ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/misc/nsplugin-examples.zip"> ! nsplugin-examples.zip</a>. April 8, 1999. ! </li> ! </ul> ! <li><h3>Cross-compilation and Using with Other Tools</h3></li> ! <ul> ! <li> ! <b>-mno-cygwin</b>: Building Mingw executables using Cygwin.<br /> Some ! <a href="http://www.nanotech.wisc.edu/~khan/software/gnu-win32/mno-cygwin-howto.txt"> ! insights and recommendations</a> on building Mingw applications using the ! Cygwin development tools. ! </li> ! <li> ! <a href="http://www.xraylith.wisc.edu/~khan/software/gnu-win32/mingw-cross-howto.txt"> ! Build cross compiler for MinGW</a><br /> ! Instructions on how to build cross and Canadian-cross development tools ! for MinGW. Feb 17, 1999. ! </li> ! </ul> ! <p><a href="#index">Back to index</a></p> ! </ul> ! <hr /> ! </td> ! </tr> ! </table> </td></tr></table> Index: download.shtml =================================================================== RCS file: /cvsroot/mingw/htdocs/download.shtml,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** download.shtml 2001/08/22 04:41:13 1.1 --- download.shtml 2001/08/27 19:41:19 1.2 *************** *** 1,2 **** --- 1,4 ---- + <!-- $Id$ --> + <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> *************** *** 28,199 **** <table border="0" cellspacing="6" cellpadding="0"> ! <tr> ! <td valign="top" align="left"> ! ! <h2> ! Downloading MinGW ! </h2> ! <p> ! MinGW is distributed as a set of inter-related <i>packages</i>. By package ! we mean self-dependent (in the bounds specified by criteria below) ! software distribution, conforming to common conventions (such as the ! internal layout, naming scheme (and generally, package meta-information ! scheme), installation procedure). Distributing MinGW this way is beneficial ! both for MinGW maintainers and permanent users - maintainers can spend less ! time for background work (laying out files, writing installation ! readme's, transferring files), and devote more time to such things as ! development, staying current with latest developments (remember, core ! of MinGW is GNU packages developed in collaborative way), and quick bugs ! turnaround. From the other side, users can make use of this flexible ! maintanance scheme by deciding themselves what and when they install or ! upgrade. Of course new users may be overwhelmed with this possibilities ! - that's why this document is written. ! ! </p> ! ! <h3> ! Download location ! </h3> ! <p> ! Standard MinGW download page is ! <a target="_nw" href="http://sourceforge.net/project/showfiles.php?group_id=2435&release_id=15084"> ! http://sourceforge.net/project/showfiles.php?group_id=2435&release_id=15084</a>. ! This page lists all available MinGW pacakges, their releases, and specific ! files to download. Also (and most importantly), it gives access to ! <i><b>Release Notes</b></i> and <i><b>ChangeLog</b></i> for specific release. ! Both items are your first guides in questions <i>"What this package is?"</i> ! and <i>"What is new in this release?"</i>. Moreover, in some cases it's ! the only documentation available for the package (at least, for MinGW port). ! So, it is <i>highly</i> recommended to read these notes before downloading. ! Unfortunately, we didn't yet come to consistent format and content of ! notes and ChangeLog, but you still may find important information this way, ! for example, that specific release is alpha (and hence not intended for ! general use), or that some package depends on another (i.e., both should ! be installed before they will work). ! </p> ! ! <p> ! With this warning in mind, here's direct link leading to download directory: ! <a target="_nw" href="http://download.sourceforge.net/mingw/"> ! http://download.sourceforge.net/mingw/</a> (HTTP), ! <a target="_nw" href="ftp://download.sourceforge.net/pub/sourceforge/mingw/"> ! ftp://download.sourceforge.net/pub/sourceforge/mingw/</a> (FTP). ! ! </p> ! ! <h3> ! Downloading packages ! </h3> ! <p> ! All the MinGW releases use consistent naming scheme: ! <blockquote> ! <tt> ! <package_name>-<original_version>[-<stamp>].<suffix> ! </tt> ! </blockquote> ! Where: ! <dl> ! ! <dt> ! <tt><package_name></tt> ! </dt> ! <dd> ! Package name of this release. Package name is usually obtained from ! the official short software name. ! </dd> ! ! <dt> ! <tt><original_version></tt> ! </dt> ! <dd> ! Official software vesrion. Since most of MinGW packages is official GNU ! software, we don't control this field and take it as is from documentation ! or specification files. ! </dd> ! ! <dt> ! <tt><stamp></tt> ! </dt> ! <dd> ! Stamp is: ! <ul> ! <li>Always YYYYMMDD timestamp for non-production releases (i.e. alpha ! and beta releases). ! <li>Sequental integer (release number) for official releases of ported ! software (i.e. ! software which we do not maintain). ! <li>May not be present for our own packages (we increment version for them, ! not release number). ! </ul> ! </dd> ! <dt> ! <tt><suffix></tt> ! </dt> ! <dd> ! File suffix (extension) corresponding to used packer. We are using either ! <tt>zip</tt> or <tt>tar.gz</tt> methods. ! </dd> ! </dl> ! For example, <tt>binutils-2.10.91-20001205.zip</tt> is a binutils ! (which are GNU Binary Utilities) 2.10.91 alpha or beta release made ! on 5th of December, 2000. ! </p> ! <h2> ! Installing MinGW ! </h2> ! <h3> ! Installing packages ! </h3> ! <p> ! After you have downloaded packages you decided to install ! (following packages are mandatory: ! <tt>libbfd</tt>, <tt>binutils</tt>, <tt>ld</tt>, <tt>gcc</tt>, ! <tt>w32api</tt>, <tt>mingw-runtime</tt>), you should choose installation ! directory (<i>recommended</i> location is <tt>/mingw</tt> (which means ! top-level directory "<tt>mingw</tt>" on your usual development drive, ! something like <tt>e:\mingw</tt> in legacy DOS notation)), you should install ! packages by simply unpacking them into that directory. ! </p> ! <p> ! The last step is to add <tt>bin</tt> subdirectory of MinGW installation to ! your PATH (you should use DOS notation there!). The easiest way to achieve ! this is to create MinGW startup file, e.g. <tt>rc.mingw.bat</tt> and put ! there commands: ! <blockquote> ! <tt> ! PATH e:\mingw\bin;%PATH%<br> ! command.com ! </tt> ! </blockquote> ! (replace <tt>command.com</tt> with your favorite shell). ! </p> ! <p> ! Afterwards, you can start your MinGW session by starting ! <tt>rc.mingw.bat</tt>. ! </p> ! <h3> ! Verifying installation ! </h3> ! <p> ! To verify that installation completed properly, run "<tt>gcc -v</tt>". You ! should see output close to the following: ! <blockquote> ! <pre> ! Reading specs from e:\mingw\bin\..\lib\gcc-lib\mingw32\2.95.2\specs ! gcc driver version 2.95.2 19991024 (release) executing gcc version 2.95.2-mingw ! snapshot 20001214 ! </pre> ! </blockquote> ! (Note that actual snapshot timestamp may differ) ! </p> ! </td> ! </tr> </table> --- 30,208 ---- <table border="0" cellspacing="6" cellpadding="0"> ! <tr> ! <td valign="top" align="left"> ! <h2>Downloading MinGW</h2> ! <p> ! Development of MinGW is done within a framework of inter-related ! <i>packages</i>. There is a package for the MinGW runtime, packages ! for GCC and other tool ports, a package for the w32api, and so forth. ! All of these packages conform to a set of common conventions (internal ! layout, directory structure, naming scheme). ! The traditional method for installing MinGW was to create a directory ! for the installation, download the desired individual packages, ! and extract their contents into the installation directory (the common ! internal layout shared by the packages made this possible). ! </p> ! <p> ! However, in mid-2001 the team began publishing a single-archive ! "MinGW distribution"... bundling the latest versions of all individual ! packages available at the time of release. This was done partially to ! streamline the installation process for newbies, and partially to ! help application and library developers design products that will build ! using MinGW (previously MinGW was a moving target with all the constant ! updates to individual packages, but now it is easier to verify things ! as being "MinGW 1.0 compatible"). ! </p> ! <p> ! The individual packages making up the MinGW distribution are still ! produced and made available for download seperately. Updated versions of ! individual packages will sometimes be made available in between releases ! of the main MinGW distribution... in most cases it should be possible ! to extract a package's content into your MinGW directory to take advantage ! of the updates immediately. ! </p> ! <h3>Download location</h3> ! <p> ! The standard MinGW download page is hosted by ! <a target="_nw" href="http://sourceforge.net/project/showfiles.php?group_id=2435"> ! SourceForge</a>. This page contains the latest version of the main ! MinGW distribution archive, as well as all available pacakges files to download. ! If you prefer, the downloads directory can be browsed directly at ! <a href="http://download.sourceforge.net/mingw/"> ! http://download.sourceforge.net/mingw/</a> (HTTP), or ! <a href="ftp://download.sourceforge.net/pub/sourceforge/mingw/"> ! ftp://download.sourceforge.net/pub/sourceforge/mingw/</a> (FTP). ! </p> ! <h3>Downloading the distribution</h3> ! <p> ! The naming scheme for the main MinGW distribution file is: ! <blockquote> ! <tt> ! Mingw-<version>[-<stamp>].<tar.gz or zip> ! </tt> ! </blockquote> ! Where: ! <dl> ! <dt> ! <tt><version></tt> ! </dt> ! <dd> ! Arbitrarily chosen by the MinGW development team, the latest version at the ! time of this writing was 1.0.1. Major updates to the distribution will ! involve incrementing the most-significant digit in the version number, ! smaller updates will increment less-significant digits. ! </dd> ! <dt> ! <tt><stamp></tt> ! </dt> ! <dd> ! Always YYYYMMDD format, representing the date on which the distribution ! was bundled (not related to the timestamp or version of any component ! package. ! </dd> ! <dt> ! <tt><suffix></tt> ! </dt> ! <dd> ! File extension corresponding to the compression method used. We are using ! <tt>zip</tt> and/or <tt>tar.gz</tt>. ! </dd> ! </dl> ! </p> ! <h3>Downloading packages</h3> ! <p> ! All the MinGW releases use consistent naming scheme: ! <blockquote> ! <tt> ! <package_name>-<original_version>[-<stamp>].<suffix> ! </tt> ! </blockquote> ! Where: ! <dl> ! <dt> ! <tt><package_name></tt> ! </dt> ! <dd> ! Package name of this release. Package name is usually obtained from ! the official short software name. ! </dd> ! <dt> ! <tt><original_version></tt> ! </dt> ! <dd> ! Official software vesrion. Since most of MinGW packages is official GNU ! software, we don't control this field and take it as is from documentation ! or specification files. ! </dd> ! <dt> ! <tt><stamp></tt> ! </dt> ! <dd> ! Stamp is: ! <ul> ! <li> ! Always YYYYMMDD timestamp for non-production releases (i.e. alpha ! and beta releases). ! </li> ! <li> ! Sequental integer (release number) for official releases of ported ! software (i.e. software which we do not maintain). ! </li> ! <li> ! May not be present for our own packages (we increment version for them, ! not release number). ! </li> ! </ul> ! </dd> ! <dt> ! <tt><suffix></tt> ! </dt> ! <dd> ! File extension corresponding to the compression method used. We are using ! <tt>zip</tt> and/or <tt>tar.gz</tt>. ! </dd> ! </dl> ! For example, <tt>binutils-2.10.91-20001205.zip</tt> is a binutils ! (which are GNU Binary Utilities) 2.10.91 alpha or beta release made ! on 5th of December, 2000. ! </p> ! <hr /> + <h2>Installing MinGW</h2> + <p> + The recommended method of installation for beginners involves downloading the + latest version of the single-file distribution, rather than any individual + packages. + </p> + <p> + After downloading the archive, create a directory on your system that you wish + to serve as the base of the installation (i.e. <tt>C:\MINGW</tt>). Extract the + distribution archive into this directory. If your compression/extraction + application does not by default preserve the directory structure of + archive contents, be sure that you instruct it to do so manually. + </p> + <p> + The last step is to add the <tt>/bin</tt> subdirectory of MinGW installation to + your PATH (the procedure for doing this varies based on the operating system + version you are using). Remember to place MinGW ahead of Cygwin in your PATH if + applicable (see the <a href="mingwfaq.shtml#faq-usingwithcygwin">FAQ</a> for + more detail). + </p> + <p> + To verify that installation completed properly, run "<tt>gcc -v</tt>". You + should see output close to the following: + <pre> + Reading specs from c:/mingw/bin/../lib/gcc-lib/mingw32/2.95.3-5/specs + </pre> + (Note that your base installation directory may differ) + </p> ! </td> ! </tr> </table> *************** *** 212,215 **** </body> </html> - - --- 221,222 ---- Index: history.shtml =================================================================== RCS file: /cvsroot/mingw/htdocs/history.shtml,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** history.shtml 2001/08/01 23:21:40 1.8 --- history.shtml 2001/08/27 19:41:19 1.9 *************** *** 1,2 **** --- 1,4 ---- + <!-- $Id$ --> + <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> Index: index.shtml =================================================================== RCS file: /cvsroot/mingw/htdocs/index.shtml,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** index.shtml 2001/08/17 00:52:43 1.20 --- index.shtml 2001/08/27 19:41:19 1.21 *************** *** 1,2 **** --- 1,4 ---- + <!-- $Id$ --> + <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> *************** *** 138,142 **** <!--#include virtual="/cgi-bin/showstatsdate.cgi?mingw"--></a>. </p> - $Id$ </body> </html> --- 140,143 ---- Index: licensing.shtml =================================================================== RCS file: /cvsroot/mingw/htdocs/licensing.shtml,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** licensing.shtml 2001/06/07 22:24:14 1.5 --- licensing.shtml 2001/08/27 19:41:19 1.6 *************** *** 1,2 **** --- 1,4 ---- + <!-- $Id$ --> + <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> Index: links.shtml =================================================================== RCS file: /cvsroot/mingw/htdocs/links.shtml,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** links.shtml 2001/08/01 23:21:40 1.13 --- links.shtml 2001/08/27 19:41:19 1.14 *************** *** 1,2 **** --- 1,4 ---- + <!-- $Id$ --> + <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> Index: lists.shtml =================================================================== RCS file: /cvsroot/mingw/htdocs/lists.shtml,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** lists.shtml 2001/01/19 01:44:13 1.6 --- lists.shtml 2001/08/27 19:41:19 1.7 *************** *** 1,2 **** --- 1,4 ---- + <!-- $Id$ --> + <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> Index: mingw-oldfaq.shtml =================================================================== RCS file: /cvsroot/mingw/htdocs/mingw-oldfaq.shtml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** mingw-oldfaq.shtml 2001/08/22 21:44:12 1.4 --- mingw-oldfaq.shtml 2001/08/27 19:41:19 1.5 *************** *** 45,51 **** The following are questions and answers from "The Old FAQ", whose content has yet to be assimilated into the consolidated FAQ or given a home ! elsewhere. The information below will soon be finding its way (most likely in ! piecemail fashion) into the consolidated FAQ, the "Documentation" and "Download" ! pages, or the upcoming <i>MinGW User's Guide</i> work in progress. </p> --- 45,51 ---- The following are questions and answers from "The Old FAQ", whose content has yet to be assimilated into the consolidated FAQ or given a home ! elsewhere. Most of the questions still remaining here don't fit in ! with the objectives of any currently-existing portion of the website... so ! they are waiting to be incorporated into the upcoming <i>MinGW User's Guide</i>. </p> *************** *** 58,62 **** <li><a href="#debugging">Debugging</a></li> <li><a href="#idesandeditors">IDEs and editors</a></li> - <li><a href="#compilingandbuilding">Compiling and building</a></li> <li><a href="#morecompilingandbuildingissues">More compiling and building issues</a></li> <li><a href="#compileroutput">Compiler output</a></li> --- 58,61 ---- *************** *** 500,783 **** <p><a href="#index">Back to index</a></p> - - <hr /> - - - - - <a name="compilingandbuilding"></a> - <h3>Compiling and Building</h3> - <li> - <h4>How to create a console application</h4></a> - <p> - Here's an example. The following is a code sample for a simple C program. Cut - and paste it into a file named hello.c to try it out. - </p> - <pre> - #include <stdio.h> - - int main(int argc, char **argv) - { - printf ("Hello\n"); - return (0); - } - </pre> - If you want to create a console mode executable hello.exe - from a c file called hello.c, try the following: - <pre> - gcc -c hello.c - </pre> - This compiles hello.c into an object file, hello.o - <pre> - gcc -o hello hello.o - </pre> - This creates an executable hello.exe from hello.o. Alternatively, you can compile - and link in one step using: - <pre> - gcc -o hello hello.c - </pre> - <p>The following is a code sample for a simple C++ program. Cut and paste it into - a file named hello.cpp to try it out. - </p> - <pre> - #include <iostream> - int main(int argc, char **argv) - { - cout << "Hello" << endl; - return (0); - } - </pre> - <p> - For the C++ program, use the following to compile and link: - </p> - <pre> - g++ -c hello.cpp - g++ -o hello hello.o - </pre> - </li> - <li> - <h4>How to create a windows application?</h4> - <p> - Here's an example. The following is a code sample for a simple - Windows program. Cut and paste it into a file named hello.c to try it out. - </p> - <pre> - #include <windows.h> - - int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) - { - MessageBox (NULL, "Hello", "Hello Demo", MB_OK); - return (0); - } - </pre> - <p> - If you want to create a Windows executable hello.exe, from a c file called - hello.c, try the following: - </p> - <pre> - gcc -c hello.c - </pre> - This compiles hello.c into an object file, hello.o - <pre> - gcc -o hello hello.o -mwindows - </pre> - This creates an executable hello.exe from hello.o - The <code>-mwindows</code> switch is needed to create Windows executables - instead of console applications. It assures the appropriate Windows libraries - are linked in for you. To get a console screen along with a standard windows - application, add the <code>-mconsole</code> flag as well as <code>-mwindows</code>. - <p> - If you have resources from a resource file (.rc) that also need - to be added to your executable, you'll need to compile the resource - file as well as your other source files and include the compiled resources - when linking to create the executable. Here's an example that shows how to - compile and link in a resource file named resfile.rc. - </p> - <pre> - windres -o resfile.o resfile.rc - gcc -o hello hello.o resfile.o -mwindows - </pre> - </li> - <li> - <h4>How to create a dll</h4> - <p> - Here's an example. Cut and paste the following into a file - named dllfct.h: - </p> - <pre> - #ifdef BUILD_DLL - // the dll exports - #define EXPORT __declspec(dllexport) - #else - // the exe imports - #define EXPORT __declspec(dllimport) - #endif - - // function to be imported/exported - EXPORT void tstfunc (void); - </pre> - <p> - Cut and paste the following into a file named dllfct.c: - </p> - <pre> - #include <stdio.h> - #include "dllfct.h" - - EXPORT void tstfunc (void) - { - printf ("Hello\n"); - } - </pre> - <p> - Cut and paste the following into a file named hello.c: - </p> - <pre> - #include "dllfct.h" - - int main () - { - tstfunc (); - return (0); - } - </pre> - <p> - To create the dll and an executable that uses it, try the following: - </p> - <pre> - gcc -c hello.c - gcc -c -DBUILD_DLL dllfct.c - dllwrap --output-lib=libtstdll.a --dllname=tst.dll --driver-name=gcc dllfct.o - gcc -o hello.exe hello.o -L./ -ltstdll - </pre> - <p> - For more information on dlls, see - <a href="http://www.nanotech.wisc.edu/%7Ekhan/software/gnu-win32/dllhelpers.html"> - http://www.nanotech.wisc.edu/~khan/software/gnu-win32/dllhelpers.html</a> - </p> - </li> - <li> - <h4>How to create a def file for a dll</h4> - <p> - There are several methods that can be tried in order to create a definition file - (.def) when one is not supplied. - </p> - <ol> - <li> - One option is the tool, pexports. A version is available from - <a href="http://www.is.lg.ua/~paul/devel/binutils.html"> - http://www.is.lg.ua/~paul/devel/binutils.html</a>. - Another version is available from Anders Norlander's MinGW page listed - in the Other resources section. If your dll has functions that use - the Pascal calling convention, you'll need to use the <code>-o</code> option. - </li> - <li> - Another option is the tool, - <a href="http://www.geocities.com/Tokyo/Towers/6162/impdef.zip">impdef</a>. - More instructions on how to create def files from dlls, a copy of impdef and - more information on how to use it are available at Colin Peters' site. - See the <a href="#tutorials">Tutorials</a> section. - Other compilers may also supply versions of the impdef program that - can be used to create a .def file which will work with any compiler. If you - have another version of impdef from another compiler, you may wish to try it. - Some handle the Pascal calling convention better than others. Borland has - a version of impdef and other compiler utilities available for download at their - Borland Community web site. Their Borland C++ version 5.5 compiler includes several - utilities to help convert between standard formats, their formats and Microsoft's - formats. - </li> - <li> - Another option is to use nm which comes with the MinGW distribution. - This option will not work for all dlls. Problems may occur if the dll is stripped or - compiled as 16 bit. To use this technique, you'll need to filter the output from nm to - create a def file. This can be done by hand in an editor or automated using tools like - Perl (Practical Extraction and Report Language) or grep (global regular expression print) - and sed (stream editor). Even with the automated methods, you may have to - make some changes by hand if the Pascal calling convention is used by the dll. - See Colin Peters' site for more details on this case. - (Versions of sed and grep are available from various sites - including archives that host gnuish MSDOS and archives such as Virtually Un*x that contain - Win32 ports of common Unix tools and from the self-hosting MinGW port distribution. The - ActiveState version of Perl works well on Win32 platforms.) - Here are examples of possible filtering techniques. - <li> - <p> - This example uses grep and sed. If you have a dll named file.dll that you wish - to create a def file for named file.def, try the following: - </p> - <pre> - echo EXPORTS > file.def - nm file.dll | grep ' T _' | sed 's/.* T _//' >> file.def - </pre> - <p> - To create a library file named file.a from the dll and def file, type: - </p> - <pre> - dlltool --def file.def --dllname file.dll --output-lib file.a - </pre> - </li> - <li> - <p> - This example uses Perl. Copy the following Perl script - to a file called dll.pl and use it: - </p> - <pre> - open (OUTFILE,">dll.def"); - print OUTFILE "EXPORTS\n"; - open (INFILE,"dll.fil"); - while(<INFILE>) - { - if ($_ =~ /T _/) - { - $line = $_; - $line =~ s/.* T _//; - print OUTFILE $line; - } - } - close (INFILE); - close (OUTFILE); - </pre> - <p> - If you have a dll file named file.dll. At the command line, type: - </p> - <pre> - nm file.dll > dll.fil - perl dll.pl - </pre> - <p> - A def file named dll.def will be created. You can rename this - as needed. You'll also probably want to delete dll.fil when you're finished - with this process. - </p> - </li> - <li> - <p> - If you don't have any of these tools on your system, you can still use nm - to create a def file and edit it by hand through an editor. For example: - </p> - <pre> - nm file.dll > dll.fil - find " T _" dll.fil > dll.def - </pre> - <p> - Replace the line at the top of dll.def that was created by the find program - and shows a file name with a line that says EXPORTS. Set your editor to search for - <code>T _</code> and erase it and anything on the line before it, leaving - only the routine names in the file. - </p> - </li> - </li> - <li> - If the previous options don't work, you can still try to create a def file - using the output from the objdump program (from the MinGW distribution). - Here's an example. - <pre> - objdump -p file.dll > dll.fil - </pre> - Search for <code>[Ordinal/Name Pointer] Table</code> in dll.fil and use the list - of functions following it to create your def file. - </li> - </ol> - </li> - <p><a href="#index">Back to index</a></p> <hr /> --- 499,502 ---- Index: mingwfaq.shtml =================================================================== RCS file: /cvsroot/mingw/htdocs/mingwfaq.shtml,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** mingwfaq.shtml 2001/08/22 21:44:12 1.21 --- mingwfaq.shtml 2001/08/27 19:41:19 1.22 *************** *** 1,2 **** --- 1,4 ---- + <!-- $Id$ --> + <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> *************** *** 53,59 **** <b>**NOTE**</b> We are currently in the process of assimilating the <a href="mingw-oldfaq.shtml">"Old FAQ"</a> contents into this consolidated ! FAQ. Information current residing on the Old FAQ page will find a home ! either here, on the "Documentation" and "Download" pages, or in the ! <i>MinGW User's Guide</i> upcoming work in progress. </p> --- 55,61 ---- <b>**NOTE**</b> We are currently in the process of assimilating the <a href="mingw-oldfaq.shtml">"Old FAQ"</a> contents into this consolidated ! FAQ. Information currently residing on the Old FAQ page will soon find a home ! either here, on the "Documentation" and "Download" pages, or in the upcoming ! <i>MinGW User's Guide</i>. </p> *************** *** 65,68 **** --- 67,71 ---- <li><a href="#faq-version">What is the current version?</a></li> <li><a href="#faq-usingolderversions">Can I use older versions?</a></li> + <li><a href="#faq-usingwithcygwin">How can I use MinGW within a Cygwin environment?</a></li> <li><a href="#faq-runtime">Which runtime should I use?</a></li> <li><a href="#faq-w32api">What is w32api?</a></li> *************** *** 266,270 **** --- 269,325 ---- + + <a name="faq-usingwithcygwin" /> + <h3>How can I use MinGW within a Cygwin environment?</h3> + <p> + <a href="http://sources.redhat.com/cygwin">Cygwin</a> refers to a GPL'ed + implementation of a POSIX emulation layer for the Win32 platform (POSIX being + a standard specification for certain OS services within the UNIX world). + This POSIX emulation layer makes it easier to port applications from UNIX + to Win32... and as a result, Cygwin has grown over the years into a full + bash shell environment with all the familiar tools a UNIX developer would + work with. Cygwin allows developers to work on a Win32 machine, and feel + as if they're developing on a UNIX box. + </p> + <p> + However, there is a downside to Cygwin (which MinGW was created to address). + All executables built by Cygwin's port of GCC have a dependency on the + Cygwin DLL, which provides the POSIX emulation layer to applications. In + addition to decreasing the execution speed of apps, the fact that + all applications have a dependency on a GPL'ed component means that + <b><i>ALL</i></b> applications built with Cygwin's GCC are legally bound + by the GPL a... [truncated message content] |