将C或C ++编译为Web程序集(clang/llvm/binaryen时)从“env”导入未定义的函数。
例如
extern "C" int afunc();
int main() {
return afunc();
}
编译到
(module
(type $FUNCSIG$i (func (result i32)))
(import "env" "afunc" (func $afunc (result i32)))
(table 0 anyfunc)
(memory $0 1)
(export "memory" (memory $0))
(export "main" (func $main))
(func $main (result i32)
(call $afunc)
)
)
我想行(import "env" "afunc" (func $afunc (result i32)))
表示它尝试请求函数afunc
from the host environment。但是,我没有找到主机环境应该命名为env
的文档。
是否可以对这些主机导入施加一些控制? 具体来说,
env
以外的其他内容吗?答案 0 :(得分:1)
目前编译C和C ++的最简单方法是使用emscripten。您提到的组件都是组件,但emscripten是一个完整的工具链,支持端到端构建,包括您需要的所有部分,包括libc / libc ++和各种其他有用的库。它支持同时定位asm.js和wasm。
" env" bit是s2wasm
的默认行为,旨在与emscripten一起使用。 Emscripten具有标准库(例如libc)并将它们链接到您的代码中,它还将其一些功能作为JavaScript代码提供,它也自动包含在您的模块中。它设置env
导入并使用它自动实例化模块。