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