如何在 Windows 中使用 MASM 构建 Boost(来自 github)?
How to build Boost (from github) with MASM in Windows?
去年 Boost(来自模块化 boost git 存储库)可以使用 these steps 在 Windows 中构建。
差不多一年后,我使用这个食谱取得了很大进展:
- 使用 mingw-get-setup
安装 MinGW(32 位)和 Msys(bash 等)
- 安装 Windows 驱动程序套件(对于 W7,我使用 WDK 7 -- GRMWDK_EN_7600_1.ISO), which provides MASM 8 (needed for boost > 1.51 according to this post)
- 下载 ISO 映像并使用 WinRAR 提取文件对我有用
- 安装程序建议不要安装 DSF,因此请跳过
-将ML64.exe和ML.exe的目录添加到路径中(都需要)
C:\Windows\WinDDK00.16385.1\bin\x86\amd64;
C:\Windows\WinDDK00.16385.1\bin\x86
- 同时安装一个 64/32 位编译器(我使用 TDM gcc 5.1.0-2)并
将其 bin/
目录添加到 Windows 路径
- 以管理员身份打开 cmd.exe 并启动 bash
- 在
boost
的父目录中,运行
git clone --recursive https://github.com/boostorg/boost.git boost > clone.log
- 退出 bash,转到目录提升和 运行:
bootstrap gcc
- 在
project-config.jam
中,将using msvc ;
改为using gcc ;
- 运行:
b2 headers
(现在需要建立符号链接)
b2 -a -d+2 -q --build-type=complete --build-dir=build toolset=gcc link=shared runtime-link=shared threading=multi
b2
的这些选项适用于以前版本的 boost,但现在我只能使用没有选项的 b2
进行编译。完整的命令行 returns 这些错误:
undefined reference to __imp_make_fcontext
和
undefined reference to __imp_jump_fcontext
.
我找不到描述这些错误的其他帖子甚至网页。有谁知道 Windows 中仍然使用 b2
选项从 GitHub 存储库获得最新提升的方法吗?
编辑:
使用 b2 -a -d+2 -q --build-dir=build toolset=gcc
有效。显然 --build-type=complete
选项是上面第一个破坏编译的选项。
标志 link=shared
、runtime-link=shared
和 threading=multi
也会导致 b2
停止。
有没有人知道如何解决这个问题?是否有适用于当前存储库的 MinGW 补丁?
您最好的选择可能是切换到 MSYS2,它是 MSYS 的新改进版本。我对 MSYS2 有很好的经验,而我不能说 MSYS 或 Cygwin(在我的例子中,它正在大量使用 boost 和 c++11 构建项目)。
你可以阅读一些比较here。
也摘自答案here:
While MSYS isn't dead, I would say it's not looking very healthy either.
去年 Boost(来自模块化 boost git 存储库)可以使用 these steps 在 Windows 中构建。
差不多一年后,我使用这个食谱取得了很大进展:
- 使用 mingw-get-setup
- 安装 Windows 驱动程序套件(对于 W7,我使用 WDK 7 -- GRMWDK_EN_7600_1.ISO), which provides MASM 8 (needed for boost > 1.51 according to this post)
- 下载 ISO 映像并使用 WinRAR 提取文件对我有用
- 安装程序建议不要安装 DSF,因此请跳过
-将ML64.exe和ML.exe的目录添加到路径中(都需要)
C:\Windows\WinDDK00.16385.1\bin\x86\amd64; C:\Windows\WinDDK00.16385.1\bin\x86
- 同时安装一个 64/32 位编译器(我使用 TDM gcc 5.1.0-2)并
将其bin/
目录添加到 Windows 路径 - 以管理员身份打开 cmd.exe 并启动 bash
- 在
boost
的父目录中,运行
git clone --recursive https://github.com/boostorg/boost.git boost > clone.log
- 退出 bash,转到目录提升和 运行:
bootstrap gcc
- 在
project-config.jam
中,将using msvc ;
改为using gcc ;
- 运行:
b2 headers
(现在需要建立符号链接)
b2 -a -d+2 -q --build-type=complete --build-dir=build toolset=gcc link=shared runtime-link=shared threading=multi
b2
的这些选项适用于以前版本的 boost,但现在我只能使用没有选项的 b2
进行编译。完整的命令行 returns 这些错误:
undefined reference to __imp_make_fcontext
和
undefined reference to __imp_jump_fcontext
.
我找不到描述这些错误的其他帖子甚至网页。有谁知道 Windows 中仍然使用 b2
选项从 GitHub 存储库获得最新提升的方法吗?
编辑:
使用 b2 -a -d+2 -q --build-dir=build toolset=gcc
有效。显然 --build-type=complete
选项是上面第一个破坏编译的选项。
标志 link=shared
、runtime-link=shared
和 threading=multi
也会导致 b2
停止。
有没有人知道如何解决这个问题?是否有适用于当前存储库的 MinGW 补丁?
您最好的选择可能是切换到 MSYS2,它是 MSYS 的新改进版本。我对 MSYS2 有很好的经验,而我不能说 MSYS 或 Cygwin(在我的例子中,它正在大量使用 boost 和 c++11 构建项目)。
你可以阅读一些比较here。
也摘自答案here:
While MSYS isn't dead, I would say it's not looking very healthy either.