WasmEdge 命令行
在安装 WasmEdge 或启动 WasmEdge appdev Docker 容器后,我们可以通过多种方法运行已经编译好的 WebAssembly 程序。
wasmedge
wasmedge 二进制文件是一个用来运行 WebAssembly 程序应用的命令行工具(CLI)。
- 假如 WebAssembly 程序包含一个
main()函数,wasmedge将在命令模式下将其作为独立程序执行。 - 假如 WebAssembly 程序包含一个或者多个公共函数,
wasmedge可以在 反应器模式下单独执行每个函数。
命令行选项
wasmedge 的选项和标志如下所示:
- (可选)统计信息:
- 用
--enable-time-measuring来展示执行时间; - 用
--enable-gas-measuring来展示 gas 的消耗量; - 用
--enable-instruction-count来展示执行的指令数量; - 或者用
--enable-all-statistics来启用所有的统计选项。 - (可选)资源限制:
- 用
--gas-limit来限制执行所花费的 gas; - 用
--memory-page-limit来设置每一个内存实例的页限制(大小为 64 KiB)。 - (可选) 反应器模式:使用
--reactor来启用反应器模式;在该模式下,wasmedge将运行 WebAssembly 程序中指定的函数: - WasmEdge 将执行第一个参数(
ARG[0])所指定的函数名; - 假如存在名为
_initialize的导出函数,这个函数将最先以空参的方式执行。 - (可选)将目录绑定到 WASI 虚拟文件系统:
- 每一个目录都以
--dir guest_path:host_path的方式指定。 - (可选)环境变量:
- 每一个变量都以
--env NAME=VALUE的方式指定。 - Wasm 文件(
/path/to/wasm/file); - (可选)参数:
- 在反应器模式下,第一个参数将作为函数的名称,
ARG[0]后的其余参数将作为ARG[0]函数的参数; - 在命令模式下,命令行参数将作为
_start函数的参数;它们也被称为独立程序的命令行参数。
安装完毕后,你可以查看并运行我们的示例。
wasmedgec
wasmedgec 是一个将 WebAssembly 字节码编译成原生机器码的程序(即 AOT 编译器)。 编译好的机器码可以被储存在原本的 wasm 文件中,wasmedge 命令行将自动地选择可用的原生机器码。
wasmedgec 的选项和标志如下所示:
- Wasm 输入文件(
/path/to/input/wasm/file); - 输出文件的名称(
/path/to/output/file): - 默认情况下,它将生成通用 wasm 二进制格式;
- 用户也可以通过指定
.so、.dylib或者.dll扩展名来生成原生二进制文件。
1. # 这很慢
2. wasmedge app.wasm
4. # AOT 编译
5. wasmedgec app.wasm app.wasm
7. # 现在就快多了
8. wasmedge app.wasm
在 Linux 系统上,它将会生成一个 so 共享库文件,然后由 wasmedge 运行时执行。
1. wasmedgec app.wasm app.so
2. wasmedge app.so
