title: Cross-Compiling Boost on Windows for Raspberry Pi using SysGCC Toolchain and MinGW
body: <p>I currently trying to cross-compile <strong>Boost 1.64.0</strong> on <strong>Windows 7 (64bit)</strong> for the <strong>Raspberry Pi</strong> (running Jessie) using the <a href="http://gnutoolchains.com/raspberry/" rel="nofollow noreferrer">Raspberry SysGCC 4.9.2 Toolchain</a> and <a href="https://mingw-w64.org/doku.php/download/mingw-builds" rel="nofollow noreferrer">MinGW 6.3.0</a>.</p>
  
  <p>I installed everything to the following directories:</p>
  
  <ul>
  <li>Boost to <strong>C:\Boost\1.64.0</strong></li>
  <li>SysGCC to <strong>C:\SysGCC\Raspberry</strong></li>
  <li>MinGW to <strong>C:\MinGW\6.3.0</strong></li>
  </ul>
  
  <p>Added the bin folders of SysGCC and MinGW to the global PATH variable:</p>
  
  <ul>
  <li>C:\SysGCC\Raspberry\bin</li>
  <li>C:\MinGW\6.3.0\mingw32\bin</li>
  </ul>
  
  <p>And created a <strong>user-config.jam</strong> with the following content in my home directory (see GCC configuration):</p>
  
  <pre><code># Copyright 2003, 2005 Douglas Gregor
  # Copyright 2004 John Maddock
  # Copyright 2002, 2003, 2004, 2007 Vladimir Prus
  # Distributed under the Boost Software License, Version 1.0.
  # (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
  
  #   This file is used to configure your Boost.Build installation. You can modify
  # this file in place, or you can place it in a permanent location so that it
  # does not get overwritten should you get a new version of Boost.Build. See:
  #
  #   http://www.boost.org/boost-build2/doc/html/bbv2/overview/configuration.html
  #
  # for documentation about possible permanent locations.
  
  #   This file specifies which toolsets (C++ compilers), libraries, and other
  # tools are available. Often, you should be able to just uncomment existing
  # example lines and adjust them to taste. The complete list of supported tools,
  # and configuration instructions can be found at:
  #
  #   http://boost.org/boost-build2/doc/html/bbv2/reference/tools.html
  #
  
  #   This file uses Jam language syntax to describe available tools. Mostly,
  # there are 'using' lines, that contain the name of the used tools, and
  # parameters to pass to those tools -- where parameters are separated by
  # semicolons. Important syntax notes:
  #
  #   - Both ':' and ';' must be separated from other tokens by whitespace
  #   - The '\' symbol is a quote character, so when specifying Windows paths you
  #     should use '/' or '\\' instead.
  #
  # More details about the syntax can be found at:
  #
  #   http://boost.org/boost-build2/doc/html/bbv2/advanced.html#bbv2.advanced.jam_language
  #
  
  # ------------------
  # GCC configuration.
  # ------------------
  
  # Configure gcc (default version).
  # using gcc ;
  
  # Configure specific gcc version, giving alternative name to use.
  # using gcc : 3.2 : g++-3.2 ;
  using gcc : 4.9 : C:\\SysGCC\\Raspberry\\bin\\arm-linux-gnueabihf-g++.exe : &lt;ranlib&gt;C:\\SysGCC\\Raspberry\\bin\\arm-linux-gnueabihf-ranlib.exe &lt;archiver&gt;C:\\SysGCC\\Raspberry\\bin\\arm-linux-gnueabihf-ar.exe ;
  
  # -------------------
  # MSVC configuration.
  # -------------------
  
  # Configure msvc (default version, searched for in standard locations and PATH).
  # using msvc ;
  
  # Configure specific msvc version (searched for in standard locations and PATH).
  # using msvc : 8.0 ;
  
  
  # ----------------------
  # Borland configuration.
  # ----------------------
  # using borland ;
  
  
  # ----------------------
  # STLPort configuration.
  # ----------------------
  
  #   Configure specifying location of STLPort headers. Libraries must be either
  # not needed or available to the compiler by default.
  # using stlport : : /usr/include/stlport ;
  
  # Configure specifying location of both headers and libraries explicitly.
  # using stlport : : /usr/include/stlport /usr/lib ;
  
  
  # -----------------
  # QT configuration.
  # -----------------
  
  # Configure assuming QTDIR gives the installation prefix.
  # using qt ;
  
  # Configure with an explicit installation prefix.
  # using qt : /usr/opt/qt ;
  
  # ---------------------
  # Python configuration.
  # ---------------------
  
  # Configure specific Python version.
  # using python : 3.1 : /usr/bin/python3 : /usr/include/python3.1 : /usr/lib ;
  </code></pre>
  
  <p>Now to create Boost.Build with MinGW and build Boost with SysGCC i'm running these commands in a administrator command prompt:</p>
  
  <pre><code>cd C:\Boost\1.64.0
  
  bootstrap.sh gcc --without-libraries=python,context,coroutine,coroutine2
  
  b2 toolset=gcc-4.9 host-os=windows target-os=linux architecture=arm address-model=32 link=static runtime-link=shared threading=multi threadapi=pthread --build-type=complete --build-dir=boost-build --stagedir=stage
  </code></pre>
  
  <p>Bootstrap runs fine (just some warnings), but b2 freezes after configuration (<em>notice: using gcc libraries</em>):</p>
  
  <pre><code>notice: found boost-build.jam at C:/Boost/1.64.0/boost-build.jam
  notice: loading Boost.Build from C:/Boost/1.64.0/tools/build/src
  notice: Searching 'C:\WINDOWS' 'C:\Users\user' 'C:\Users\user' 'C:\Boost\1.64.0\tools/build/src' 'C:/Boost/1.64.0/tools/build/src/kernel' 'C:/Boost/1.64.0/tools/build/src/util' 'C:/Boost/1.64.0/tools/build/src/build' 'C:/Boost/1.64.0/tools/build/src/tools' 'C:/Boost/1.64.0/tools/build/src/contrib' 'C:/Boost/1.64.0/tools/build/src/.' for site-config configuration file 'site-config.jam'.
  notice: Configuration file 'site-config.jam' not found in 'C:\WINDOWS' 'C:\Users\user' 'C:\Users\user' 'C:\Boost\1.64.0\tools/build/src' 'C:/Boost/1.64.0/tools/build/src/kernel' 'C:/Boost/1.64.0/tools/build/src/util' 'C:/Boost/1.64.0/tools/build/src/build' 'C:/Boost/1.64.0/tools/build/src/tools' 'C:/Boost/1.64.0/tools/build/src/contrib' 'C:/Boost/1.64.0/tools/build/src/.'.
  notice: Searching 'C:\Users\user' 'C:\Users\user' 'C:\Boost\1.64.0\tools/build/src' 'C:/Boost/1.64.0/tools/build/src/kernel' 'C:/Boost/1.64.0/tools/build/src/util' 'C:/Boost/1.64.0/tools/build/src/build' 'C:/Boost/1.64.0/tools/build/src/tools' 'C:/Boost/1.64.0/tools/build/src/contrib' 'C:/Boost/1.64.0/tools/build/src/.' for user-config configuration file 'user-config.jam'.
  notice: Loading user-config configuration file 'user-config.jam' from 'C:/Users/user'.
  notice: will use 'C:\SysGCC\Raspberry\bin\arm-linux-gnueabihf-g++' for gcc, condition &lt;toolset&gt;gcc-arm
  notice: using gcc libraries :: &lt;toolset&gt;gcc-arm :: C:\SysGCC\Raspberry/bin C:\SysGCC\Raspberry/lib C:\SysGCC\Raspberry/lib32 C:\SysGCC\Raspberry/lib64
  </code></pre>
  
  <p>Any suggestions? :-)</p>