【问题标题】:Building Boost 1.65.0 with minGW 4.9.2使用 minGW 4.9.2 构建 Boost 1.65.0
【发布时间】:2017-08-23 07:33:47
【问题描述】:

背景

计划使用 Boost 提供的一些工具进行文件系统遍历和提取​​相关文件名。 (如果需要,可以扩展到 Boost 提供的其他功能)。

使用的 IDE:代码块 16.0.1
编译器:minGW 4.9.2(自带上述 IDE 标准安装)
操作系统         :版本 10.0.15063

到目前为止我做了什么

  1. 将 minGW 设置为 SysPath
  2. 下载 boost_1_65_0 并将其解压到 C:\User\user\Documents\boost_1_65_0
  3. 使用 CMD 通过
    bootstrap.bat gcc
    使用 CMD 通过 gcc 工具集调用引导程序(遇到 error-01
  4. 使用 Boost 提供的替代方法下载 Boost-Jam 的预构建二进制文件。
  5. 下载并构建 Boost-Jam,通过命令
    build.bat gcc 在 Boost Jam(版本 3.1.18)目录中创建 bin.ntx86 目录
  6. 将..\boost-jam-3.1.18\bin.ntx86的目录添加到SysPath
  7. 尝试通过命令
    bjam --toolset=gcc "--prefix=D:\SoftwareDevelopmentTools\CodeBlocks" install 再次构建 boost
    (遇到 error-02 & warning-01 )

    注意:第 7 项基于在 Codeblocks BoostWindowsQuickRef 给出的说明

遇到的错误

错误 01:

构建 Boost.Build 引擎
C:\Users\user\AppData\Local\Temp\ccayvfUp.o:execnt.c:(.text+0x1237):undefined reference to UnregisterWait
C:\Users\user\AppData\Local\Temp\ccayvfUp.o:execnt.c:(.text+0x12fe):undefined reference to RegisterWaitForSingleObject
collect2.exe:错误:ld 返回 1 个退出状态

bootstrap.log 上的输出

###
### 使用“gcc”工具集。
###

C:\Users\user\Documents\boost_1_65_0\tools\build\src\engine>如果存在 bootstrap rd /S /Q bootstrap

C:\Users\user\Documents\boost_1_65_0\tools\build\src\engine>md 引导

C:\Users\user\Documents\boost_1_65_0\tools\build\src\engine>gcc -DNT -o bootstrap\jam0.exe command.c compile.c constants.c debug.c execcmd.c execnt.c filent.c frames.c function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c object.c option.c output.c parse.c pathnt。 c pathsys.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c md5.c class.c cwd.c w32_getreg.c native .c 模块/set.c 模块/path.c 模块/regex.c 模块/property-set.c 模块/sequence.c 模块/order.c

C:\Users\user\Documents\boost_1_65_0\tools\build\src\engine>exit /b 1



错误 02:
请注意,这是在 warning-01 之后的输出中(请参阅下面的警告遇到)

'python' 未被识别为内部或外部命令, 可运行的程序或批处理文件。
C:/Users/user/Documents/boost_1_65_0/tools/build/src/tools\python.jam:669: 在 declare-libpython-target

*** 参数错误
* 规则拆分版本(版本)
* 调用:( )
* 缺少参数版本

C:/Users/user/Documents/boost_1_65_0/tools/build/src/tools\python.jam:383:查看被调用规则“split-version”的定义

C:/Users/user/Documents/boost_1_65_0/tools/build/src/tools\python.jam:971:在配置中

C:/Users/user/Documents/boost_1_65_0/tools/build/src/tools\python.jam:115: 在 python.init

C:/Users/user/Documents/boost_1_65_0/tools/build/src/build\toolset.jam:42: 在使用中 libs\python\build\Jamfile:17:在 modules.load

C:/Users/user/Documents/boost_1_65_0/tools/build/src/build\project.jam:325: 在 load-jamfile

C:/Users/user/Documents/boost_1_65_0/tools/build/src/build\project.jam:64: 加载中

C:/Users/user/Documents/boost_1_65_0/tools/build/src/build\project.jam:89: 在 load-used-projects

C:/Users/user/Documents/boost_1_65_0/tools/build/src/build\project.jam:75: 加载中

C:/Users/user/Documents/boost_1_65_0/tools/build/src/build\project.jam:145: 在 project.find

C:/Users/user/Documents/boost_1_65_0/tools/build/src\build-system.jam:535: 加载中

C:\Users\user\Documents\boost_1_65_0\tools\build\src/kernel\modules.jam:295:导入中

C:\Users\user\Documents\boost_1_65_0\tools\build\src\kernel\bootstrap.jam:139: 在 boost-build

C:\Users\user\Documents\boost_1_65_0\boost-build.jam:17:在模块范围内



遇到警告

警告 01:

警告:Boost.Build 引擎和核心版本不匹配
警告:Boost.Build 引擎 (bjam) 是 03.1.18
警告:Boost.Build 核心(位于 C:/Users/user/Documents/boost_1_65_0/tools/build/src)是 2015.07-git



我对自己做错了什么或可能错过的步骤感到非常困惑。这是我第 6 次尝试构建 boost

更新 01

安装 Python 3.6 并使用此命令重新启动构建 bjam --toolset=gcc "--prefix=D:\SoftwareDevelopmentTools\CodeBlocks" install

遇到这个错误

C:/Users/user/Documents/boost_1_65_0/tools/build/src/util\path.jam:458: 在 path.makedirs 模块路径中的规则 MAKEDIR 未知
C:/Users/user/Documents/boost_1_65_0/tools/build/src/build\configure.jam:279: 在configure.set-log-file
C:/Users/user/Documents/boost_1_65_0/tools/build/src\build-system.jam:679: 加载中
C:\Users\user\Documents\boost_1_65_0\tools\build\src/kernel\modules.jam:295:导入中
C:\Users\user\Documents\boost_1_65_0\tools\build\src\kernel\bootstrap.jam:139: 在 boost-build
C:\Users\user\Documents\boost_1_65_0\boost-build.jam:17:在模块范围内

【问题讨论】:

  • 别担心@NickyHFE,你并不孤单。我给here 的指示仍然对我有用。但是,我的机器上安装了 Python 3.6,这可能是不同的......
  • 嗯..我会尝试安装Py看看是否有所不同

标签: boost


【解决方案1】:

已解决

最可能的原因:Boost.Build for Boost v1.65.0 不能与 GCC 4.9.2 编译。

使用更新的 GCC v6.3.0 更改了工具集 gcc(通过 minGW-get 获得)

【讨论】:

    【解决方案2】:

    尝试将 WINVER 更改为 0x0500(就像在 Windows XP 上一样)。最简单的方法 - 编辑文件 %CodeBlocks%\MinGW\include\windef.h 中的字符串:

    #ifndef WINVER
    #define WINVER 0x0400
    

    #ifndef WINVER
    //#define WINVER 0x0400
    #define WINVER 0x0500
    

    那一定能解决你的问题。

    PS: %CodeBlocks% - 安装了 CodeBlocks 中的目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 2013-12-14
      • 1970-01-01
      • 2012-12-08
      相关资源
      最近更新 更多