Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
diana:windows:building:environment [2009-11-09 14:45:44]
dages
diana:windows:building:environment [2022-05-31 09:29:31] (current)
Line 1: Line 1:
 ====== Setting up the build environment on Windows ====== ====== Setting up the build environment on Windows ======
  
-Assuming Windows XP 32.+Assuming Windows XP 32.  We will use MinGW to build the libraries and application and MSYS as a working environment.
  
-===== Stuff you'll need =====+The distinction between MinGW and MSYS is very important: MinGW is a set of compilers and libraries you use to build Windows applications, while MSYS is an emulated GNU environment similar to (and, in fact, based on) Cygwin.  You can //not// use MSYS libraries in your Windows application.  This means that you will sometimes have two copies of a particular library: an MSYS version used by MSYS tools, and a native version built with MinGW and used by MinGW tools and / or your application.
  
-==== Subversion client ====+===== Directories ===== 
 + 
 +We will install MinGW into ''C:\MinGW'' and MSYS into ''C:\MSYS''
 + 
 +MSYS maps Unix-like paths to Windows paths: ''/'' translates to ''C:\MSYS'' and ''/mingw'' translates to ''C:\MinGW'' In addition, all Windows drives will show up as ''/x'', where ''x'' corresponds to the drive letter, so ''/c/windows'' translates to ''C:\windows'', etc. 
 + 
 +We will install our libraries and applications into ''C:\met.no'' You should start by creating that directory and the required subdirectories: 
 + 
 +  C:\> mkdir met.no 
 +  C:\> mkdir met.no\bin 
 +  C:\> mkdir met.no\include 
 +  C:\> mkdir met.no\lib 
 +  C:\> mkdir met.no\share 
 +  C:\> mkdir met.no\copyright 
 + 
 +===== Subversion =====
  
 Doesn't really matter which one.  Certified binaries of The Real McCoy are available at http://www.collab.net/downloads/subversion/ (command-line only) if you have an account (or are willing to register).  There are other (non-certified) sources such as SlikSVN (http://www.sliksvn.com/en/download, command-line only) and TortoiseSVN (http://tortoisesvn.net/downloads, with Windows Explorer integration, which is really neat). Doesn't really matter which one.  Certified binaries of The Real McCoy are available at http://www.collab.net/downloads/subversion/ (command-line only) if you have an account (or are willing to register).  There are other (non-certified) sources such as SlikSVN (http://www.sliksvn.com/en/download, command-line only) and TortoiseSVN (http://tortoisesvn.net/downloads, with Windows Explorer integration, which is really neat).
  
-==== MinGW ====+===== MinGW ====
 + 
 +Download and the latest automated installer from http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/ and run it.  Ask for the //current// version (not //previous// or //candidate//).  Select these components //and these components only//: base tools, g++ compiler, g77 compiler. 
 + 
 +As of 2009-11-20, the current MinGW version is 5.1.6, which includes GCC 3.4.5. 
 + 
 +//tip: move the installer into an empty directory before starting it; it will download all the MinGW distribution files into that directory.// 
 + 
 +At this point, you may want to download bsdtar from http://sourceforge.net/projects/mingw/files/MinGW%20Utilities/basic%20bsdtar/bsdtar-2.7.900a_r1628-20091110/ and install ''bsdtar.exe'' as ''/mingw/bin/tar'' It supports a wider range of archive formats and compression algorithms than GNU tar, and automatically detects which one to use. 
 + 
 +You may want to install InfoZip's ''zip'' utility as well, since ''bsdtar'' can //extract// zip files but not //create// them: download the source code from http://sourceforge.net/projects/infozip/files/, extract it, and run the following commands in the source directory: 
 + 
 +  $ make -f win32/makefile.gcc 
 +  $ cp zip.exe /mingw/bin 
 + 
 +===== MSYS ===== 
 + 
 +Download the MSYS installer from 
 +http://sourceforge.net/projects/mingw/files/MSYS%20Base%20System/ and run it (you will need administrator privileges).  Accept the default answer to all questions. 
 + 
 +As of 2009-11-20, the latest MSYS version is 1.0.11. 
 + 
 +===== Testing the toolchain ===== 
 + 
 +Let's see if our C compiler works: 
 + 
 +  $ which gcc 
 +  /mingw/bin/gcc.exe 
 +  $ gcc --version 
 +  gcc.exe (GCC) 3.4.5 (mingw-vista special r3) 
 +  Copyright (C) 2004 Free Software Foundation, Inc. 
 +  This is free software; see the source for copying conditions.  There is NO 
 +  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 +  $ cat >hello.c 
 +  #include <stdio.h> 
 +  int main(void) { printf("Hello, C world!\n"); return 0; } 
 +  ^D 
 +  $ gcc -o hello hello.c 
 +  $ ./hello.exe  
 +  Hello, C world! 
 + 
 +And C++: 
 + 
 +  $ which g++ 
 +  /mingw/bin/g++.exe 
 +  $ g++ --version 
 +  g++.exe (GCC) 3.4.5 (mingw-vista special r3) 
 +  Copyright (C) 2004 Free Software Foundation, Inc. 
 +  This is free software; see the source for copying conditions.  There is NO 
 +  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 +  $ cat >hello.cc 
 +  #include <iostream> 
 +  int main() { std::cout << "Hello, C++ world!" << std::endl; return 0; } 
 +  ^D 
 +  $ g++ -o hello hello.cc 
 +  $ ./hello.exe  
 +  Hello, C++ world! 
 + 
 +And Fortran 77: 
 + 
 +  $ which g77 
 +  /mingw/bin/g77.exe 
 +  $ g77 --version 
 +  GNU Fortran (GCC) 3.4.5 (mingw-vista special r3) 
 +  Copyright (C) 2004 Free Software Foundation, Inc. 
 +   
 +  GNU Fortran comes with NO WARRANTY, to the extent permitted by law. 
 +  You may redistribute copies of GNU Fortran 
 +  under the terms of the GNU General Public License. 
 +  For more information about these matters, see the file named COPYING 
 +  or type the command `info -f g77 Copying'
 +  $ cat >hello.f 
 +        PROGRAM HELLOW 
 +        WRITE(UNIT=*, FMT=*) 'Hello, Fortran world!' 
 +        END 
 +  ^D 
 +  $ g77 -o hello hello.f 
 +  $ ./hello.exe  
 +   Hello, Fortran world! 
 + 
 +===== lex & yacc ===== 
 + 
 +Or rather, in our brave GNU world, flex and bison.  There is a problem here: you can't use the MSYS versions, because they're not just build tools&mdash;bison includes a runtime library (''liby'').  Hence we need native versions of both tools.  We can get those from [[http://sourceforge.net/projects/gnuwin32|GnuWin32]]. 
 + 
 +Download the following files from http://sourceforge.net/projects/gnuwin32/files/:
  
-Not necessarily the latest and greatest.  Get the automated installer from http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/ and remember to ask for g++ and g77, but do //not// ask for make; we'll use MSYS's make instead.  Remember where you installed MinGW.+  * the ''bin'', ''lib'' and ''dep'' zipfiles for the latest bison release (the ''dep'' zipfile contains a few libraries that bison needs, so you won't have to install them separately) 
 +  the ''bin'' and ''lib'' zipfiles for the latest flex release
  
-==== MSYS ====+For some unfathomable reason, both the flex and bison ''lib'' zipfiles contain incorrect copies of ''<unistd.h>'' Either make a backup copy of ''/MinGW/include/unistd.h'' before you unpack them, or tell ''unzip'' (or ''bsdtar'') not to overwrite existing files:
  
-Includes bash, make, autotools etc.+  $ tar -kxf bison-2.4.1-lib.zip -C /MinGW
  
-Download the latest version of the MSYS Base System from http://sourceforge.net/projects/mingw/files/MSYS%20Base%20Systemand run it.  At some point, it will ask you where you installed MinGW, and I'm betting you won't even think twice before ratting it out.+This will install a shell script called ''/MinGW/bin/yacc'' which incorrectly redirects to ''c:/progra~1/bison/bin/bison'' Edit it so the entire script looks like this:
  
-Now that MSYS is installed, you can start the "MSYS (rxvt)shortcut it installed, and it'll be almost like you were home on the Unix farm.+  #! /bin/sh 
 +  exec /mingw/bin/bison -y "$@"
  
-==== WiX ====+===== WiX =====
  
-Microsoft's tool for creating installation packages: http://sourceforge.net/projects/wix/files/+Microsoft's tool for creating installation packages: http://sourceforge.net/projects/wix/files/.  Ironically, it does //not// come with its own installer.
  
  • diana/windows/building/environment.1257777944.txt.gz
  • Last modified: 2022-05-31 09:23:14
  • (external edit)