【问题标题】:Does compiler matter for Boost.Build?编译器对 Boost.Build 重要吗?
【发布时间】:2013-03-01 15:58:04
【问题描述】:

我希望在 Windows 上为 Android 构建 boost 的序列化库。我已经下载了 Android NDK r8d 和 boost 1.53。

此过程的第 1 步是安装 boost.build,为我获取可用于构建库的 bjam 或 b2 可执行文件。

所以我去 boost_1_53_0/tools/build/v2 并按照此处的说明运行 boostrap.bat:http://www.boost.org/doc/libs/1_53_0/more/getting_started/windows.html

它失败了。

'cl' 未被识别为内部或外部命令

bootstrap.log 表明该脚本正在使用 msvc。谷歌搜索这个问题,我找到了建议我尝试将 GCC 添加到我的路径并将 GCC 附加到引导命令的解决方案。

现在,我还没有安装 minGW。但是,我不认为我想使用 minGW GCC,因为这不是我要构建 boost 库或我的代码的内容;我将使用 Android NDK 提供的 GCC。

我是否正确地假设编译器 Boost.Build 是用什么来构建的?如果是这样,我该如何解决这个问题?将 NDK 编译器位置添加到 Path 并尝试使用 arm-linux-androideabi-g++ 引导不起作用;引导日志说它不是受支持的工具集,我应该使用 mscv、gcc 等。

【问题讨论】:

    标签: c++ boost


    【解决方案1】:

    您应该将 NDK 工具链添加到 user-config.jam 并在 bjam 行中选择此工具集。请查看following question

    更新:您可以使用 MSVC 构建 bjam,然后使用它来调用 Android NDK 工具集。

    【讨论】:

    • 您在该链接中链接的解决方案实际上是让我遇到这个问题的原因。尝试从 boost root 运行 b2 或 bjam 不是公认的命令。 Boost 的文档建议运行 build/v2 bootstrap 来构建 b2 并将其添加到 Path。这样做需要我提供带有 c++ 编译器的 bootstrap.bat,这让我想到了这个问题。您介意详细说明或纠正我的错误假设吗?
    • @Wes Paugh 啊,对不起,我看错了你的问题。您应该从 boost root 运行 booststrap.bat,而不是从 build/v2。至少我一直都是这样做的,而且到目前为止效果还不错。
    • 谢谢,我想这回答了我的问题。如果您使用默认编译器(而不是“bootstrap.bat gcc”)进行引导,那么 b2 和 bjam 将使用 msvc 或其他系统 c++ 编译器而不是 android 编译器构建。因此,我的问题的答案应该是,“不,您可以使用任何可用的 c++ 编译器构建 b2 和 bjam,并且在通过修改 user-config.jam 构建像序列化这样的 boost 库时仍然指定 NDK 编译器”。谢谢!测试完毕后,我会将其标记为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多