使用SysGCC工具链和MinGW在Windows上为Raspberry Pi交叉编译Boost

使用SysGCC工具链和MinGW在Windows上为Raspberry Pi交叉编译Boost,windows,boost,raspberry-pi,mingw,cross-compiling,Windows,Boost,Raspberry Pi,Mingw,Cross Compiling,我目前正试图在Windows7(64位)上使用和交叉编译Raspberry Pi(运行Jessie)的Boost 1.64.0 我已将所有内容安装到以下目录: 提升到C:\Boost\1.64.0 SysGCC到C:\SysGCC\Raspberry MinGW到C:\MinGW\6.3.0 将SysGCC和MinGW的bin文件夹添加到全局路径变量: C:\SysGCC\Raspberry\bin C:\MinGW\6.3.0\mingw32\bin 并在我的主目录中创建了一个user

我目前正试图在Windows7(64位)上使用和交叉编译Raspberry Pi(运行Jessie)的Boost 1.64.0

我已将所有内容安装到以下目录:

  • 提升到C:\Boost\1.64.0
  • SysGCC到C:\SysGCC\Raspberry
  • MinGW到C:\MinGW\6.3.0
将SysGCC和MinGW的bin文件夹添加到全局路径变量:

  • C:\SysGCC\Raspberry\bin
  • C:\MinGW\6.3.0\mingw32\bin
并在我的主目录中创建了一个user config.jam,其中包含以下内容(请参见GCC配置):

引导运行正常(只是一些警告),但b2在配置后会冻结(注意:使用gcc库):

注意:在C:/boost/1.64.0/boost-build.jam处找到boost-build.jam
注意:从C加载Boost.Build:/Boost/1.64.0/tools/Build/src
注意:搜索“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/build”“C:/Boost/1.64.0/tools/build/src/tools”“C:/Boost/1.64.0/tools/build/src/contrib”“C:/Boost/1.64.0/站点配置文件“site config.jam”。
注意:在“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/src/'C:/Boost/1.64.0/tools/build/src/'。
注意:搜索“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/tools”“C:/Boost/1.64.0/tools/build/src/tools”“C:/Boost/1.64.0/src/contrib”“C:/Boost/1.64.0/tools/build/src/”配置文件“user config.jam”。
注意:正在从“C:/Users/user”加载用户配置文件“user config.jam”。
注意:对于gcc,将使用“C:\SysGCC\Raspberry\bin\arm-linux-gnueabihf-g++”,条件是gcc arm
注意:使用gcc库::gcc arm::C:\SysGCC\Raspberry/bin C:\SysGCC\Raspberry/lib C:\SysGCC\Raspberry/lib32 C:\SysGCC\Raspberry/lib64

有什么建议吗?:-)

显然是因为Boost 1.61对Boost.Build的一些更改在windows上交叉编译时破坏了Cygwin路径分辨率,如清单中所述

一种可能的解决方案(来自票据的解决方法)是修补tools\build\src\文件夹中的cygwin.jam文件。把63行从

if $(head) = / 

现在b2运行没有问题。:-)

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
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 <toolset>gcc-arm
notice: using gcc libraries :: <toolset>gcc-arm :: C:\SysGCC\Raspberry/bin C:\SysGCC\Raspberry/lib C:\SysGCC\Raspberry/lib32 C:\SysGCC\Raspberry/lib64
if $(head) = / 
if $(head) = "/" || [ MATCH  "^([a-zA-Z]:/)$" : $(head) ]