有没有合理的方法可以在emscripten的多模块构建中创建Webassembly“静态库”

时间:2018-11-09 10:13:15

标签: emscripten webassembly

我正在转换一个大型C ++应用程序,以便在Webassembly环境中运行。该构建被组织成模块,每个模块子项目都创建一个静态或动态库。

据我所知,尚没有用于将“ wasm”模块动态链接到浏览器运行时引擎的标准“ ABI”,因此,目前尚不支持预编译和链接库的动态链接。

但是对于静态库,它们只是预编译的“中间”“对象”代码的集合,这些代码在最后的“链接”阶段转换为分发代码。我已将编译器设置为从创作的languange创建“ .bc”“目标代码”。

我还没有找到关于创建编译器输出的简单存档的引用,该存档可以馈送到emcc编译器/链接器支持的最终“链接”。

因此,一种策略是我可以使用简单的清单创建zip文件(有点像jar文件),并且构建系统可以将它们全部解压缩到一个临时区域中,并合并导出文件。然后将整体“链接”到浏览器“可分发”模块中。

这种事情是否有新生的标准定义?如果是这样,我应该支持它。

1 个答案:

答案 0 :(得分:1)

您应该能够像标准emar工具一样使用ar,以便从.bc对象文件中创建库。

然后,您可以在链接时将它们送入em++(或emcc)中,它们的工作方式就像本机库与本机编译器一样。您可以直接在命令行上或使用-L / -l参数来引用它们。