如何使用 MinGW 构建 Boost 1.55?

Posted

技术标签:

【中文标题】如何使用 MinGW 构建 Boost 1.55?【英文标题】:How do I build Boost 1.55 with MinGW? 【发布时间】:2013-12-14 11:26:31 【问题描述】:

我已经下载了 Boost 1.55 和 MinGW。

控制台回答我没有任何命令。 我不明白如何绑定两个路径并激活 GCC 编译器。

P.S.:如果我使用 Microsoft 的编译器构建 boost,我将有大约 8 个错误,错误 3861!!

我该如何构建它?

【问题讨论】:

另见***.com/q/13256788/1390430 【参考方案1】:

首先确保您的 mingw 的 bin 目录在您的环境中 PATH,因此可以从命令提示符调用 gccg++。然后进入解压文件所在的 boost 根目录。

使用 bootstrap + b2.exe 进行构建。例如,假设您只想编译 boost 的正则表达式部分。以下命令应该可以解决问题:

bootstrap gcc
b2 toolset=gcc regex

你可以使用:

b2 --show-libraries

获取可以单独构建的模块列表。当然,您可以通过以下方式构建所有这些:

b2 toolset=gcc

查看Boost Invocation 了解可用选项的详细列表。

【讨论】:

我不得不使用bootstrap gcc @RestlessC0bra 这对我有用,谢谢。使用版本 boost_1_63_0。我补充说,我在我的 project-config.jam 文件中找到了这个“使用 msvc ;”我很困惑 b2 是否会使用 msvc 来编译源代码,但是通过定义 toolset=gcc 一切正常,并且 boost 是使用 mingw 的 gcc 编译的。【参考方案2】:

Greatwolf 的回答对我不起作用,所以这就是我设法让它起作用的方法。

首先,确保MinGW\bin 在您的路径上

转到您的 boost 文件夹的 tools\build\v2 目录。例如,就我而言,它是C:\Boost\boost_1_55_0\tools\build\v2。然后运行

bootstrap mingw

之后,切换到 Boost 根目录(这部分很重要,因为 b2 会根据当前目录检测要构建的内容)

现在,如果您想构建文件系统,请执行

tools\build\v2\b2 toolset=gcc --build-type=complete stage --with-filesystem

这会将libboost_filesystem-mgw48-d-1_55.dll 等放入stage\lib。如果您想构建所有内容,只需省略 --with-filesystem 部分即可。

【讨论】:

谢谢你,你的评论对我很有帮助!【参考方案3】:

我能够按照 Antimony 的说明构建它。但是我最初得到了这个错误:

Bootstrapping the build engine
\Windows was unexpected at this time.

通过清除 PATH 变量并将 MinGW 文件夹放入其中解决了该错误:

set PATH=C:\MinGW\bin

然后锑的指示为我完成了这项工作。谢谢!!

还有另外两件小事可能会有所帮助。 MinGW 的 BOOST 应该从 Windows shell 构建,而不是从 MSYS shell 构建。而在 1.57 版本中,bootstrap.bat 脚本不再位于 tools\build\v2 中,而是直接位于 tools\build 中。

【讨论】:

【参考方案4】:

如果您已将 MinGW/GCC 作为TDM-GCC 的一部分安装,您将拥有一个可以启动的“MinGW 命令提示符”。这将加载一个命令提示符窗口并将 GCC 编译器放在该窗口的 PATH 中。 (类似于随 Visual Studio 安装的“开发人员命令提示符”。)

我认为the "MinGW distro" 也有一个。

如果你有一个集成的命令提示符,你可以简单地:

启动“MinGW 命令提示符” 转到您的 Boost 文件夹(例如 C:/Boost) 运行bootstrap gcc 运行b2 toolset=gcc(或您需要的任何b2 命令)

如果您正在使用某人未明确设置工具集的示例,您将必须自己添加toolset=gcc。请注意,toolset 必须放在 property 位置,而不是 optioncommand 位置。来自b2 --help

b2 [options] [properties] [install|stage]

因此,如果有人编写命令来调用带有--prefix 选项的install 命令,他们会写成:

b2 --prefix=C:\boost-build install

你可以重写为:

b2 --prefix=C:\boost-build toolset=gcc install

更多详情请见b2 --help

【讨论】:

以上是关于如何使用 MinGW 构建 Boost 1.55?的主要内容,如果未能解决你的问题,请参考以下文章

代码块、MinGW、Boost 和静态链接问题

Ubuntu 15.04 clang++ 3.6 编译boost 1.59/1.55

MinGW 和 Boost C++ 1.54.0 警告

如何在 Eclipse 中使用 MinGW 编译 boost 线程?

使用 minGW 构建 crypto562

在 Visual Studio 2013 XP 工具集上构建提升