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

时间:2015-07-11 19:47:40

标签: windows boost mingw masm undefined-reference

去年Boost(来自模块化的boost git存储库)可以使用these steps在Windows中构建。

我差不多一年后才使用这个食谱:

  1. 使用mingw-get-setup安装MinGW(32位)和Msys(bash等)
  2. 安装Windows驱动程序工具包(适用于W7,我使用的是WDK 7 - GRMWDK_EN_7600_1.ISO),它提供MASM 8(根据this post提升> 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)并将其bin/目录添加到Windows路径
  4. 以管理员身份打开cmd.exe并启动bash
  5. boost的父目录中,运行
    git clone --recursive https://github.com/boostorg/boost.git boost > clone.log
  6. 退出bash,转到目录提升并运行:
    bootstrap gcc
  7. project-config.jam中,将using msvc ;更改为using gcc ;
  8. 运行:
    b2 headers(现在需要制作符号链接)
    b2 -a -d+2 -q --build-type=complete --build-dir=build toolset=gcc link=shared runtime-link=shared threading=multi
  9. b2的这些选项适用于以前版本的boost,但现在我只能使用b2编译而没有选项。完整的命令行会返回以下错误:
    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=sharedruntime-link=sharedthreading=multi也会导致b2停止。

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

1 个答案:

答案 0 :(得分:1)

您最好的选择可能是切换到MSYS2,这是MSYS的一个新的改进版本。我对MSYS2有很好的经验,但我不能说关于MSYS或Cygwin(在我的情况下,使用boost和c ++ 11大量构建项目)。

您可以阅读一些比较here

也取自答案here

  

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