Cross-compile native mingw compilers for windows

Now that I successfully built the linux version of the mingw compilers for win64 and win32, I figured out the next logical step would be to try to build the native version of those compilers to run on windows. So here we go!

Gathering informations

Starting from those official (but old ?) instructions from mingw wiki pages:

It makes sense: we should just be able to use the same compiler from the same sources, but to run on a different host…

First iteration

  • Building binutils: OK
  • The instructions mention creating a 'winsup' folder: disregarding this step
  • Installing the headers: OK
  • Building gcc stage 1: getting error:
    The directory that should contain system headers does not exist:
    make[1]: * [stmp-fixinc] Error 1
    • This error could be related to the previous step we just skipped… let's reconsider that. Adding this section in our build script just before gcc stage 1:
        # Create the winsup folder if required:
        if [ "$flavor" == "win" ]; then
          mkdir -p $__gcc/winsup/mingw
          ln -s $idir/$tgt/include $__gcc/winsup/mingw/include
    • same error
    • Trying instead to provide the cross-compiler include and lib paths when building gcc and building it completely instead of only stage 1: same error, but keeping this change.
    • Now trying to simply add the missing required folder /mingw/include: OK

⇒ So it turns out that when building the native compilers we use the libs created for the cross compilers. Thus, gcc canbe compiled in a single stage.

⇒ Also, we don't bother compiler the CRT libraries for the native compilers, instead we simply copy them from the cross-compiler folder.

Now testing our new native win64 compiler on windows: Error: pthreads headers are not found, so we should build pthread too for the native compiler: OK after this change everything is fine :-)

Also testing building the win32 native compiler and testing on windows: OK ! (which is nice because the precompiled win32 compiler I tried before was not working !)


So, this was far less complicated than the cross-compiler build described in my previous post: in the process I updated my build script to support building both linux and windows versions of the mingw32 and mingw64 compilers. The only important requirement one should keep in mind if trying to use those scripts is that the linux version of the compilers should be built before trying to build the native version, because in the native build pipeline we will simply copy some files that where previously generated in the linux hosted version.

The current scripts I use are:

# Helper method used to build a compiler from sources given its target architecture (either '64' or '32')
#arg1: target architecture
#arg2: host version to build: "linux" or "win"
  local arch="$1"
  local flavor="$2"

  local sdir="/mnt/array1/dev/compilers" # source file directory
  local bdir="/mnt/array1/dev/build/mingw${arch}" # Build directory
  local compdir="/mnt/array1/dev/compilers"
  local idir="$compdir/$flavor-mingw${arch}" # installation directory
  local tgt="x86_64-w64-mingw32"
  if [ "$arch" == "32" ]; then

  local build="x86_64-linux-gnu"
  local host="$build"
  if [ "$flavor" == "win" ]; then

  local srcfile="mingw64_sources" # archive file base name
  local __binutils="binutils-2.28"
  local __gmp="gmp-6.1.2"
  local __headers="mingw-w64/mingw-w64-headers"
  local __crt="mingw-w64/mingw-w64-crt"
  local __pthreads="mingw-w64/mingw-w64-libraries/winpthreads"
  local __mpfr="mpfr-3.1.5"
  local __mpc="mpc-1.0.3"
  local __isl="isl-0.18"
  local __gcc="gcc-7.1.0"

  local cpus=$(grep -c processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu | tr -d "\n" 2>/dev/null)
  echo "Using $cpus CPUs"

  # Remove previous stuff:
  echo "Removing previous install folder $idir..."
  rm -Rf "$idir"

  echo "Removing previous build folder $bdir..."
  rm -Rf "$bdir"

  echo "Extracting source archive $srcfile"
  mkdir -p "$bdir"
  cd "$bdir"
  7za x "${sdir}/${srcfile}.7z" 

  # Setup the directories:
  local srcdir="$bdir/src"
  cd "$srcdir"

  # Build the binutils:
  nv_std_build $__binutils "--host=$host --target=$tgt --prefix=$idir --with-sysroot=$idir --disable-shared --enable-static --disable-multilib --disable-nls" || { echo "=> Error in binutils build"; return 1; }

  # We should ensure here our path contains our new compiler location:
  # (this is the case for me so I don't need this)
  # if [[ `echo $PATH | grep $idir/bin` == "" ]]; then
  # 	echo "Adding new compiler location to path: $idir/bin"
  # 	export PATH="$idir/bin:$PATH"
  # fi

  # Install the headers:
  nv_std_build $__headers "--host=$tgt --build=$host --prefix=$idir/$tgt --enable-secure-api" || { echo "=> Error in mingw64 headers build"; return 1; }

  # Create the symlinks:
  cd $idir
  ln -s $tgt mingw

  cd "$srcdir"

  # Move dependencies into GCC folder:
  mv $__gmp $__gcc/gmp
  mv $__mpfr $__gcc/mpfr
  mv $__mpc $__gcc/mpc
  mv $__isl $__gcc/isl

  # Check if we can build gcc completely:
  local gccstage="gcc"
  if [ "$flavor" == "win" ]; then
    local cdir="$compdir/linux-mingw${arch}"
    export CFLAGS="-I$cdir/include -L$cdir/lib"
    gccstage="" # Build gcc completely in one step.

  # Build GCC, pass 1
  nv_std_build $__gcc "--host=$host --target=$tgt --prefix=$idir --enable-languages=c,c++ --disable-multilib --disable-shared --enable-static --disable-nls --enable-threads=posix --enable-sjlj-exceptions --enable-fully-dynamic-string" "$gccstage" || { echo "=> Error in gcc build"; return 1; }

  # Reset the CFLAGS
  export CFLAGS=""

  if [ "$flavor" == "win" ]; then
    # We should be done building gcc, and we can retrieve the CRT previously compiled with the cross compiler:
    local cdir="$compdir/linux-mingw${arch}"
    mkdir -p $idir/$tgt/lib/
    cp $cdir/$tgt/lib/* $idir/$tgt/lib/
    # Build the crt
    nv_std_build $__crt "--host=$tgt --build=$build --prefix=$idir/$tgt --with-sysroot=$idir/$tgt" || { echo "=> Error in mingw64 CRT build"; return 1; }

  # Build the winpthread library:
  cd "$srcdir"
  nv_std_build $__pthreads "--host=$tgt --build=$build --prefix=$idir/$tgt --with-sysroot=$idir/$tgt --disable-shared --enable-static" || { echo "=> Error in mingw64 winpthreads build"; return 1; }

  if [ "$flavor" != "win" ]; then
    # Finish building GCC:
    cd "$srcdir/$__gcc/build"
    make || { echo "Building gcc pass 2 FAILED."; return 1; }
    make install || { echo "Installing gcc pass 2 FAILED."; return 1; }
    cd ..
    rm -Rf build

  # Go into the compiler folder and remove the build folder:
  cd "$sdir"
  rm -Rf "$bdir"

  echo "=> Compiler build SUCCESSFUL."

  # nv_build_mingw_compiler "64"
  nv_build_mingw_compiler "64" "linux"

  # nv_build_mingw_compiler "32"
  nv_build_mingw_compiler "32" "linux"

  nv_build_mingw_compiler "64" "win"

  nv_build_mingw_compiler "32" "win"

In the script above I use my custom mingw64_sources.7z package: this is simply a zip of an src folder, containing all the libraries at the expected version (cf. the script itself) which I created after manually downloading/extracting the library official packages to ensure I always have a copy of those packages, and I can extract everything I need quickly without redownloading [you know, just in case one day the Internet would go completely down (… as if our main problem in that case would be to have a copy of the gcc sources ;-)…)]
OBATOBAT, 2018/10/16 07:32




















option=com_kunena&func=view&catid=14&id=184602&Itemid=81 184602 dengan-cepat e0d2-436c-b582-31a39760c376 cepat\



Khasiat QNC Jelly Gamat Untuk Semua Keluhan PenyakitKhasiat QNC Jelly Gamat Untuk Semua Keluhan Penyakit, 2019/04/10 09:00

gadai bpkb mobilgadai bpkb mobil, 2020/01/29 08:11

gadai bpkb mobil cepat cair, gadai bpkb mobil bunga rendah, gadai bpkb mobil cepat bunga rendah, pinjaman jaminan bpkb mobil, pinjaman bpkb mobil, kredit jaminan bpkb mobil, pinjaman agunan bpkb mobil

Samulinpro Sehat SendiSamulinpro Sehat Sendi, 2020/03/25 06:23 Samulinpro sehat sendi merupakan suplemen kesehatan herbal yang diformulasikan khusus untuk mengatasi masalah persendian dan otot tulang, dengan menggabungkan kombinasi komposisi berkualitas menggunakan Teknologi Nano oleh Para Ahli sehingga produk ini memiliki khasiat yang maksimal.

govt jobsgovt jobs, 2020/05/27 05:35

govt jobs Livegovjob is a leading Job site for Freshers who seek employment opportunities in both Private and Government sectors in India. Livegovjob - We provides you all the latest official Sarkari Result, सरकारी रिजल्ट्स, Online Forms, Sarkari Naukri Jobs in various sectors such as Railway, SSC, Arm..y, Navy, Police, UPPSC, UPSSSC & other sarkari job alerts at one place.

<a href=””>govt jobs</a> 
sarkari resultsarkari result, 2020/05/27 05:36

inewjob: inewjob 2020 is the best place to get fast updates of the most recent Sarkari 2020. For forthcoming enrollment warnings that are accessible on inewjob, Sarkari Naukri, Freshersworld, Sarkari exam, Rojgar Result are for the most part accessible in Job ready page and get notified of all Central Sarkari Exam 2020 State Vacancies including Railway Jobs, UPSC, SSC, PSC, banking, and so forth. sarkariexam 2020 <a href=””>sarkari result</a>

garmin expressgarmin express, 2020/05/27 10:49

Garmin express - Garmin express is a software application designed by the company to update, install and manage all the garmin devices from your desktop only. <a href=“”>garmin express</a> <a href=“”>garmin express</a>, 2020/07/08 07:07

Mcafee antivirus scans all the folders on the system so that any malware cannot damage the users' essential documents. Get all the answers at one place regarding Mcafee Antivirus setup Setup and configuration from the globally famous Mcafee technical support experts. mcafee activate

شركة نقل عفش بجدةشركة نقل عفش بجدة, 2020/09/07 20:58

<a href=“”>شركات نقل عفش واثاث بجدة</a>

<a href=“”>شركات نقل عفش بالطائف</a>

<a href=“”>اسعار وارقام شركات نقل العفش بالمدينة المنورة</a>

<a href=“”>دينا نقل عفش جدة ,افضل دينا</a>

<a href=“”>ارخص شركه نقل عفش بجده</a>

<a href=“”>دليل شركات نقل العفش بجدة</a>

<a href=“”>شركة نقل عفش برابغ ,15 عام خبرة</a>

<a href=“”>شركات نقل عفش واثاث بالباحه</a>

<a href=“”>وسائل نقل العفش بخميس مشيط</a>

شركة نقل اثاث بالرياضشركة نقل اثاث بالرياض, 2020/09/07 20:58 شركات نقل العفش اهم شركات كشف تسربات المياه بالدمام كذلك معرض اهم شركة مكافحة حشرات بالدمام والخبر والجبيل والخبر والاحساء والقطيف كذكل شركة تنظيف خزانات بجدة وتنظيف بجدة ومكافحة الحشرات بالخبر وكشف تسربات المياه بالجبيل والقطيف والخبر والدمام شركة تنظيف خزانات بجدة شركة كشف تسربات المياه بالدمام شركة مكافحة حشرات بالدمام شركة تنظيف خزانات بجدة شركة نقل عفش واثاث شركة نقل اثاث بالرياض شركة نقل عفش بجدة شركة نقل عفش بالدمام شركة نقل عفش بالمدينة المنورة شركة نقل عفش بالطائف شركة نقل عفش بمكة اهم شركات نقل العفش والاثاث بالدمام والخبر والجبيل اولقطيف والاحساء والرياض وجدة ومكة المدينة المنورة والخرج والطائف وخميس مشيط وبجدة افضل شركة نقل عفش بجدة نعرضها مجموعة الفا لنقل العفش بمكة والخرج والقصيم والطائف وتبوك وخميس مشيط ونجران وجيزان وبريدة والمدينة المنورة وينبع افضل شركات نقل الاثاث بالجبيل والطائف وخميس مشيط وبريدة وعنيزو وابها ونجران المدينة وينبع تبوك والقصيم الخرج حفر الباطن والظهران شركة نقل عفش بينبع شركة نقل عفش ببريدة شركة نقل عفش بالخرج شركة نقل عفش بالقصيم شركة نقل عفش بخميس مشيط شركة نقل عفش بتبوك شركة نقل عفش بابها شركة نقل عفش بنجران شركة نقل عفش بحائل شركة نقل عفش بالظهران شركة نقل عفش بالكويت

شركة نقل اثاث بمكةشركة نقل اثاث بمكة, 2020/09/07 20:59 نقل الاثاث شركة نقل عفش بالرياض شركة نقل عفش بجدة شركة نقل عفش بالدمام شركة نقل عفش بالمدينة المنورة شركة نقل عفش بالطائف شركة نقل عفش بمكة شركة نقل عفش بينبع شركة نقل عفش بنجران شركة نقل عفش بخميس مشيط شركة نقل عفش بابها شركة نقل عفش ببريدة شركة نقل عفش بالقصيم شركة نقل عفش بتبوك شركة نقل عفش بحائل شركة نقل عفش بالخبر شركة نقل عفش بالاحساء شركة نقل عفش بالقطيف شركة نقل عفش بالجبيل

شركة سكاي لنقل العفششركة سكاي لنقل العفش, 2020/09/07 20:59

شركة سكاي لخدمات نقل العفش والاثاث بالمنطقة العربية السعودية نحن نوفر خدمات نقل اثاث بالرياض ونقل عفش بالمدينة المنورة ونقل عفش بمكة ونقل عفش بالطائف نحن نقدم افضل نقل اثاث بخميس مشيط ونقل عفش بجدة شركة سكاي لنقل العفش نقل عفش بمكة نقل عفش بالرياض نقل عفش بالمدينة المنورة نقل عفش بجدة نقل عفش بالطائف نقل عفش بالدمام نقل عفش بالقطيف نقل عفش بالجبيل نقل عفش بالخبر نقل عفش بالاحساء نقل عفش بالخرج نقل عفش بخميس مشيط نقل عفش بابها نقل عفش بالقصيم نقل عفش بينبع نقل عفش بنجران نقل عفش بحائل نقل عفش ببريدة نقل عفش بتبوك نقل عفش بالظهران نقل عفش برابغ نقل عفش بالباحه نقل عفش بعسير نقل عفش بالمجمعة نقل عفش بشرورة

شركة نقل عفش بالمدينة المنورةشركة نقل عفش بالمدينة المنورة, 2020/09/07 21:00 شركة نقل عفش بالمدينة المنورة شركة نقل عفش بالمدينة المنورة شركة نقل عفش بمكة شركة نقل عفش بالرياض شركة نقل عفش بجدة شركة نقل عفش بالطائف شركة نقل عفش بينبع شركة نقل عفش بالدمام شركة نقل عفش بالدمام

شركة كيان لنقل العفششركة كيان لنقل العفش, 2020/09/07 21:01

شركة كيان لنقل العفش بالرياض والمدينة المنورة وجدة ومكة والطائف والدمام تقديم لكم دليل كامل لشركات نقل العفش بالمملكة العربية السعودية شركة كيان لنقل العفش منتدي نقل العفش شركة نقل اثاث بالرياض شركة نقل اثاث بجدة شركة نقل اثاث بمكة شركة نقل اثاث بالطائف شركة نقل اثاث بالمدينة المنورة شركة نقل اثاث بالدمام شركة نقل اثاث بالخبر شركة نقل اثاث بالظهران شركة نقل اثاث بالجبيل شركة نقل اثاث بالقطيف شركة نقل اثاث بالاحساء شركة نقل اثاث بالخرج شركة نقل اثاث بخميس مشيط شركة نقل اثاث بابها شركة نقل اثاث بنجران شركة نقل اثاث بجازان شركة نقل اثاث بعسير شركة نقل اثاث بحائل شركة نقل عفش بالقصيم شركة نقل اثاث بينبع شركة نقل عفش ببريدة شركة نقل عفش بحفر الباطن شركة نقل عفش برابغ شركة نقل عفش بتبوك شركة نقل عفش بعسفان شركة نقل عفش بشرورة شركات نقل العفش بالرياض سيارات نقل العفش بالرياض ارقام شركات نقل العفش بالرياض شركات نقل العفش بجدة اسعار نقل العفش بجدة شركات نقل العفش بمكة

شركة ريلاكس لنقل العفش والاثاثشركة ريلاكس لنقل العفش والاثاث, 2020/09/07 21:02 شركة ريلاكس لنقل العفش والاثاث شركة نقل عفش بالطائف شركة نقل عفش بالرياض شركة نقل عفش بجدة شركة نقل عفش بمكة شركة نقل عفش بالمدينة المنورة شركة نقل عفش بخميس مشيط شركة نقل اثاث بابها شركة نقل عفش بنجران ِشركة نقل عفش بحائل شركة نقل عفش بالقصيم شركة نقل عفش بالباحة شركة نقل عفش بينبع دينا نقل عفش بابها نقل الاثاث بالمدينة المنورة ارخص شركة نقل عفش بمكة شركة نقل عفش بالخرج شركة نقل عفش بالبقعاء شركة نقل عفش بجازان

شركة تنظيف بالطائفشركة تنظيف بالطائف, 2020/09/07 21:03 شركات نقل وتنظيف شركات نقل عفش بالطائف شركات نقل عفش بالمدينة المنورة شركات نقل عفش بمكة شركات نقل عفش شركة تنظيف خزانات بالمدينة المنورة شركات تنظيف بمكة شركة مكافحة حشرات شركة تنظيف بالدمام شركة تنظيف بالمدينة شركة تنظيف بالطائف

airlinesreservationsdealsairlinesreservationsdeals, 2020/11/06 05:03

Bio Etihad cancellation policy - Read how to cancel etihad flight booking within 24 hour and how to get refund on cancellation.More info:

Enter your comment. Wiki syntax is allowed:
If you can't read the letters on the image, download this .wav file to get them read to you.
  • blog/2017/0924_build_native_mingw64_compiler.txt
  • Last modified: 2020/07/10 12:11
  • (external edit)