blob: e84063f479942b5214c55f0182c4fb31794095e1 [file] [log] [blame]
HowTo build x86_64-pc-mingw32 cross-compiler
Date / Version / Author
2007-07-31 1.0 Kai Tietz <Kai.Tietz at onevision.com>
2007-08-20 1.1 Kai Tietz <Kai.Tietz at onevision.com>
2007-08-21 1.2 NightStrike <nightstrike at gmail.com>
2007-10-01 1.3 NightStrike <nightstrike at gmail.com>
This document describes how to build the amd64 mingw32 gcc toolchain as a cross-compiler on cygwin and unix shells.
0. Requirements
On a clean cygwin install, you will need the following additional packages installed:
A complete gcc toolchain for the host system
bison
cvs
diffutils
flex
gmp
make
mpfr
perl (for pod2man)
subversion
wget
1. Download packages
The following packages you need to download
- binutils 2.17.50 snapshot released after or equal to the 1st of July 2007.
- gcc version 4.3 snapshort released after or equal to the 1st of July 2007.
- current mingw-w64-snapshot available at https://sourceforge.net/projects/mingw-w64
Now extract these tarballs to a temporary folder. E.g. use ~/w64src. For the tarballs with
extension .tar.gz or .tgz use the following command to extract : tar -xzf <tarball>'. For
tarballs with extension .tar.bz2 or .tbz2 use the command 'tar -xjf <tarball>'.
There are now three folders within you temporary folder: trunk, binutils, and gcc.
2. Build type options
You have at least two different choices to build the crosscompiler toolchain:
I) Using standard settings of configure.
II) Using --prefix and --with-sysroot configuration
I assume that '/usr/local/' is the <install-root> for build type I, the path specified using --with-sysroot is
the root for type II. For this example, it will be set to '/mypath'.
3. Building binutils cross toolchain:
Step 1) Enter into the binutils root folder and generate a folder within (e.g.
'build'). Then enter into it.
Step 2 for I) Type '../configure --target=x86_64-pc-mingw32'
Step 2 for II) Type '../configure --target=x86_64-pc-mingw32 --prefix=/mypath --with-sysroot=/mypath'.
Step 3) Type 'make'
Step 4) Type 'make install'
Now copy the content of the folder 'trunk/mingw-w64-headers/include' into your '<install-root>/x86_64-pc-mingw32/include'
folder. If you choose the configuration variant II create in /mypath a symbolic link named
'mingw' pointing to the directory 'x86_64-pc-mingw32'. For instance:
$ cd /mypath
$ ln -s x86_64-pc-mingw32 mingw
Note:
The header-set and crt contains the standard-c and the windows (w32api) specific files. Therefore it is not necessary
to install an additional package. Simply use the '-mwindows' option for windows GUI applications. By default '-mconsole'
is used and produce console applications. Also you can use the '-mdll' option for generating shared objects (dll).
4. Building the gcc core cross-compiler(s):
Step 0) If you have to patch gcc, may do this here. There are some patches necessary, if you want
to cross compile libiberty with early header sets, or if you want to use gfortran. These patches
are available by the 'gcc-patches' mailing list at 'gcc.gnu.org' or by taking a look at mingw.org
or mingw-w64 sites.
Step 1) Enter into the gcc root folder and generate a folder within (e.g. 'build'). Then you may
apply optional patches to gcc (currently there is a patch file for gcc needed to fix some
problems about autoimported variables, libiberty and the fortan compiler). Enter into the
build directory when finished.
Step 2 for I) Type: '../configure --target=x86_64-pc-mingw32'.
Step 2 for II) Type: '../configure --target=x86_64-pc-mingw32 --prefix=/mypath --with-sysroot=/mypath'.
Step 3) Type 'make all-gcc'
Step 4) Type 'make install-gcc'
Now the core stuff of gcc is present and we can build the crt itself.
5. Building the crt:
Step 0) If you are using variant II, may you need to adjust the 'prefix' value in Makefiles.
Step 1) Enter into the trunk/mingw-w64-crt root directory.
Step 2 for I) Type 'make'
Step 2 for II) Type 'make prefix=/mypath'
(Note: If building the cross compiler on a system where the default executable extension is not .exe, override
the EXEEXT variable on the make commandline by adding "EXEEXT=".)
Step 3) Copy all generated *.a files out of the 'mklibs' folder into the
'<install-root>/x86_64-pc-mingw32/lib' folder.
Step 4) Copy out of the root folder to the '<install-root>/x86_64-pc-mingw32/lib' folder the files
crt1.o, crt2.o, lib*.a, *.dll, crtbegin.o, crtend.o, dllcrt1.o, dllcrt2.o, binmode.o, txtmode.o,
CRT_fp8.o, and the CRT_fp10.o
Note: Currently there is no dll build. As long as we use static crt libraries.we won't need a ctor/dtor dll.
6. Now you are ready to build the rest of gcc:
Step 1) Enter into your generated folder within your gcc root source folder.
Step 2) Type 'make'
Step 3) Type 'make install'