是否有合理的方法在 emscripten 的多模块构建中创建 webassembly "static library"
Is there a reasonable way to create a webassembly "static library" in a multi-module build for emscripten
我正在为 运行 在 webassembly 环境中转换大型 C++ 应用程序。构建被组织成模块,每个模块子项目创建一个静态或动态库。
据我所知,还没有 "ABI" 标准化 "wasm" 动态链接到浏览器 运行 时间引擎的模块,所以目前预动态链接尚不支持编译和链接库。
但在静态库的情况下,它们只是预编译的 "intermediate" "object" 代码的集合,这些代码在最后的 "link" 阶段被转换为分发代码。我将编译器设置为从创作的语言中创建“.bc”"object code"。
我没有找到任何关于创建编译器输出的简单存档的参考资料,该存档可以提供给 emcc compiler/linker.
支持的最终 "link"
所以一个策略是我可以用一个简单的清单创建 zip 文件(有点像 jar 文件),构建系统可以将它们全部解压到一个临时区域,然后合并导出文件。然后"link"整个群发到浏览器"distributable"模块中。
这种东西有新的标准定义吗?如果是我应该支持
您应该能够像使用标准 ar
工具一样使用 emar
从 .bc
目标文件创建库。
然后您可以在 link 时将它们输入 em++
(或 emcc
),它们将像本机库与本机编译器一样工作。您可以直接在命令行上或使用 -L
/-l
参数引用它们。
我正在为 运行 在 webassembly 环境中转换大型 C++ 应用程序。构建被组织成模块,每个模块子项目创建一个静态或动态库。
据我所知,还没有 "ABI" 标准化 "wasm" 动态链接到浏览器 运行 时间引擎的模块,所以目前预动态链接尚不支持编译和链接库。
但在静态库的情况下,它们只是预编译的 "intermediate" "object" 代码的集合,这些代码在最后的 "link" 阶段被转换为分发代码。我将编译器设置为从创作的语言中创建“.bc”"object code"。
我没有找到任何关于创建编译器输出的简单存档的参考资料,该存档可以提供给 emcc compiler/linker.
支持的最终 "link"所以一个策略是我可以用一个简单的清单创建 zip 文件(有点像 jar 文件),构建系统可以将它们全部解压到一个临时区域,然后合并导出文件。然后"link"整个群发到浏览器"distributable"模块中。
这种东西有新的标准定义吗?如果是我应该支持
您应该能够像使用标准 ar
工具一样使用 emar
从 .bc
目标文件创建库。
然后您可以在 link 时将它们输入 em++
(或 emcc
),它们将像本机库与本机编译器一样工作。您可以直接在命令行上或使用 -L
/-l
参数引用它们。