| 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> |
| |
| This document describes how to build the amd64 mingw32 gcc toolchain as cross-compiler on cygwin and unix shells. |
| |
| 1. Download packages |
| The following packages you need to download |
| - binutils 2.17.50 snapshot released after or equal to the 1st of Junly 2007. |
| - gcc version 4.3 snapshort released after or equal to the 1st of Junly 2007. |
| - current mingw-w64-snapshot available on the sourceforge 'mingw-w64' |
| |
| Now extract these tarballs in an 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. Choice of kind of build |
| |
| 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 <install-root> is for build kind I '/usr/local' and for kind II your specified |
| path. |
| |
| Building binutils cross toolchain: |
| Step 1) Enter into the binutils root folder and generate a folder within (e.g. |
| 'build'). Than 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=/vol/m --with-sysroot=/vol/m'. |
| May change the pathes '/vol/m' to pathes you desire. |
| 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 <install-root> a symbolic link named |
| 'mingw' pointing to the directory 'x86_64-pc-mingw32'. |
| |
| 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'). Than may you |
| 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). |
| Step 2 for I) Now enter into your created folder (e.g. 'build') and type |
| '../configure --target=x86_64-pc-mingw32'. |
| Step 2 for II) Now enter into your created folder (e.g. 'build') and type |
| '../configure --target=x86_64-pc-mingw32 --prefix=/vol/m --with-sysroot=/vol/m'. |
| May change the pathes '/vol/m' to pathes you desire. |
| 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. |
| |
| 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) Type 'make' |
| 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. |
| |
| 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' |
| |