如何在 Windows 中使用 MASM 构建 Boost(来自 github)?

How to build Boost (from github) with MASM in Windows?

提问人:alle_meije 提问时间:7/12/2015 最后编辑:Communityalle_meije 更新时间:7/12/2015 访问量:348

问:

去年,可以使用以下步骤在 Windows 中构建 Boost(来自模块化 boost git 存储库)。

差不多一年后,我用这个食谱走了很远:

  1. 使用 mingw-get-setup 安装 MinGW(32 位)和 Msys(bash 等)
  2. 安装 Windows 驱动程序工具包(对于 W7,我使用了 WDK 7 -- GRMWDK_EN_7600_1.ISO),它提供了 MASM 8(根据这篇文章,boost > 1.51 需要) - 下载 ISO 映像并使用 WinRAR 提取文件对我有用 - 安装程序建议不要安装 DSF,所以跳过

    - 将 ML64.exe 和 ML.exe 的目录添加到路径中(两者都是必需的)

    C:\Windows\WinDDK\7600.16385.1\bin\x86\amd64; C:\Windows\WinDDK\7600.16385.1\bin\x86
  3. 同时安装一个 64/32 位编译器(我使用的是 TDM gcc 5.1.0-2)并将其
    目录添加到 Windows 路径中
    bin/
  4. 以管理员身份打开 cmd.exe 并启动 bash
  5. 在 的父目录中,运行boost
    git clone --recursive https://github.com/boostorg/boost.git boost > clone.log
  6. 退出 bash,转到 directory boost 并运行:
    bootstrap gcc
  7. 在 中,更改为project-config.jamusing msvc ;using gcc ;
  8. run:
    (现在需要建立符号链接)
    b2 headers
    b2 -a -d+2 -q --build-type=complete --build-dir=build toolset=gcc link=shared runtime-link=shared threading=multi

这些选项适用于以前版本的 boost,但现在我只能使用没有选项进行编译。完整的命令行将返回以下错误:

.
b2b2undefined reference to __imp_make_fcontextundefined reference to __imp_jump_fcontext

我找不到描述这些错误的其他帖子甚至网页。有谁知道 Windows 中仍然使用 GitHub 存储库中最新提升选项的方法?b2

编辑

使用作品。显然,该选项是上述选项中第一个破坏编译的选项。b2 -a -d+2 -q --build-dir=build toolset=gcc--build-type=complete

标志,也导致停止。link=sharedruntime-link=sharedthreading=multib2

有没有人知道如何解决这个问题?是否有适用于当前存储库的 MinGW 补丁?

Windows Boost mingw MASM 未定义引用

评论


答:

1赞 doqtor 7/12/2015 #1

最好的选择可能是切换到 MSYS2,它是 MSYS 的全新改进版本。我对 MSYS2 有很好的经验,而我不能对 MSYS 或 Cygwin 这么说(就我而言,这是大量使用 boost 和 c++11 构建一个项目)。

你可以在这里阅读一些比较。

也取自这里的答案:

虽然 MSYS 没有死,但我想说它看起来也不是很健康。

评论

0赞 alle_meije 7/13/2015
太棒了 -- 所以在 MSYS2 中甚至不需要编译 boost?那就更好了(因为如果我不需要,我不打算做助推开发)!
0赞 doqtor 7/13/2015
有预构建的提升和许多其他用于查询。pacman -Ss <libname>