使用 MinGW 构建提升时出错

Error building boost with MinGW

我尝试使用 CodeBLocks (gccc v5.1) 附带的 MinGW 的 GCC 版本构建增强库,并且我在 PATH 中有 bin 文件夹。当我运行

boostrap.bat mingw

boostrap.bat gcc

我得到

execnt.c: In function 'try_wait_callback':
execnt.c:833:5: warning: implicit declaration of function 'UnregisterWait' [-Wimplicit-function-declaration]
 UnregisterWait( slot->wait_handle );

读了一些书,有人告诉我我的 gcc 版本无法构建 boost,所以我下载了最后一个 MinGW-w64 并将其 bin 文件夹内容复制到 MinGW 的 bin 文件夹中,试图 "cheat"

如果我愿意 gcc -v

我可以看到我的版本是 7.3

现在它抛出这个错误:

gcc: error: CreateProcess: No such file or directory

你应该使用 MinGW-w64,没有步骤 "copy its bin folder content into the MinGW" !

您想完全避免使用 pre-fork MinGW。再次下载并安装 MinGW-w64,如果需要,add it to Code::Blocks.

请注意,有些网站提供 MinGW-w64 和 Boost 包。

我在使用 Code::Block 提供的 MinGW 时遇到了同样的问题。所以我必须在建议中添加重要的细节。 要构建 Boost.build 工具:

  1. 在 NEW 目录中安装 minGW-w64 后,您需要从 PATH 环境变量中删除旧 MinGW\bin 目录的条目,并添加类似 "C:\MinGW-w64\bin" 条目的新条目。
  2. 由于某种原因,在用户或管理员下的命令行中启动命令没有像 Boost 文档中预期的那样工作,但如果从 MinGW-w64 提供的快捷方式启动终端 - Boost 命令可以完成构建。 (命令"bootstrap.bat gcc")
  3. 然后 Boost 文档推荐 "b2 install --prefix=PREFIX" 但我还必须在从 MinGW-w64 快捷方式启动的终端中添加类似 "b2 install --prefix=PREFIX toolset=gcc" 的参数。
  4. 因为我想在我的项目中使用 Code::Blocks 的 MinGW32(出于其他兼容性原因),我不得不再次从可用性中跳过 MinGW-w64(我刚刚重命名了 MinGW-w64 的目录,你可以从 PATH 中删除条目)并恢复 PATH 变量中的 MinGW32 条目。此外,我将 Boost 构建工具 "bin" 目录添加到 PATH 中。 所以我已经准备好使用 Boost.Build 工具(由 MinGW-w64 编译器构建)

构建 Boost 库的二进制文件:

  1. 然后我在管理员下启动终端,将 dir 更改为 boost 根目录,然后使用最后一个命令,如 "b2 --build-dir=build-directory toolset=gcc --build-type=complete stage"(构建目录由您选择)

最后我得到了结果:

...更新 1334 个目标失败...

...跳过 732 个目标...

...更新了 2873 个目标...

我在哪里可以找到我需要的 Boost 文件系统文件,例如

libboost_filesystem-mgw51-mt-x32-1_67.dll

libboost_filesystem-mgw51-mt-s-x32-1_67.a

libboost_filesystem-mgw51-mt-x32-1_67.a

等等

我还没有测试它们,但这可以帮助其他人构建 Boost。