用 emscripten 提升 bjam

Posted

技术标签:

【中文标题】用 emscripten 提升 bjam【英文标题】:boost bjam with emscripten 【发布时间】:2015-01-05 19:34:52 【问题描述】:

我在尝试使用 emscriten 和 boost 的 bjam 构建系统编译我的项目时遇到问题。这是我的用户配置:

using clang
  : 5.4
  : emcc
  : <archiver>emar
    <ranlib>emranlib
  ;

这就是我构建项目的方式:

bjam toolset=clang-5.4 -j3 -d+2 --user-config=em.jam release

我遇到的问题是,bjam 拒绝使用提供的归档器和 ranlib。这会导致分段错误:

/bin/sh: line 1: 13572 Segmentation fault      (core dumped) "ar" rc "../.build/

无论我尝试什么,我都无法使用 emar。手动运行 emar 没有任何问题。

【问题讨论】:

这可能不是这个地方。提升开发邮件列表或 emscripten #IRC 似乎都是合适的。很可能是后者,因为这是 他们的 箍要跳过。他们没有实际的工具链——它一直是包装器,AFAICT sehe,不,这是 bjam 的一个古老问题,我看到有关此的帖子一直追溯到 2004 年。 emscripten 是无辜的,手动运行 emar 可以正常工作。 它仍然是他们的篮球。 Emscripten 开发人员将更有动力编译更令人生畏的库,也许他们已经建立了方法。或者他们会提前告诉你为什么不去打扰。你试过联系他们吗? (另外,上次我检查 emscripten 只有非常微弱的仿真包装器,几乎不能与有限的 automake 项目配合使用。所以在过去的两三年里,它们神奇地变成了一个成熟的工具链,或者你的“不”是太果断了) 他们非常好,甚至我的一些奇怪的 SIMD 代码现在都可以工作了。 代码级别的兼容性当然是由 LLVM 提供的。这不是复杂的部分(来自 emscripten 的 POV)。代码生成后端和工具链兼容性是 emscripten 的复杂性。 【参考方案1】:

您现在可以使用 Boost Build (emscripten.jam) 中包含的“emscripten”工具集。它将处理除共享库之外的所有内容。

【讨论】:

它为我生成.bc 文件。如何构建静态库.a

以上是关于用 emscripten 提升 bjam的主要内容,如果未能解决你的问题,请参考以下文章

Emscripten:用控制台(某种)替换提示

Emscripten教程之Emscripten的运行时环境

Emscripten教程之Emscripten的运行时环境

将 QT WebAssembly 与 Emscripten 关联

从 EMSCRIPTEN 访问 DOM

使用 Emscripten 将 R 函数编译为 JavaScript