在 Windows 10由源码构建

WasmEdge 支持 Windows 10 。我们也同时提供了二进制安装包和库文件。

可以在这里查看详情。

如果想要在 Windows 10 上开发 WasmEdge,请继续阅读本文以进行从源码构建和测试。

下文中将以 AOT 代替 ahead-of-timeahead-of-time 的含义是将 WASM 文件提前编译为机器码。

下载源代码

  1. git clone https://github.com/WasmEdge/WasmEdge.git
  2. cd WasmEdge

依赖说明

WasmEdge 尝试用最新的 LLVM 发行版本来创建我们的 nightly 版本。

需要以下自行安装以下依赖才能编译源码:

  • Chocolatey,用来安装 cmake、ninja 和 vswhere
  • Windows SDK 19041
  • LLVM 13.0.0,预编译版本在下节中提供

下载依赖

  1. # 下载工具
  2. choco install cmake ninja vswhere
  3. $vsPath = (vswhere -latest -property installationPath)
  4. Import-Module (Join-Path $vsPath "Common7\Tools\Microsoft.VisualStudio.DevShell.dll")
  5. Enter-VsDevShell -VsInstallPath $vsPath -SkipAutomaticLocation -DevCmdArguments "-arch=x64 -host_arch=x64 -winsdk=10.0.19041.0"
  6. # 下载我们提供的预编译好的 LLVM 13
  7. $llvm = "LLVM-13.0.0-win64.zip"
  8. curl -sLO https://github.com/WasmEdge/llvm-windows/releases/download/llvmorg-13.0.0/LLVM-13.0.0-win64.zip -o $llvm
  9. Expand-Archive -Path $llvm
  10. # 设置 LLVM 环境变量
  11. $llvm_dir = "$pwd\\LLVM-13.0.0-win64\\LLVM-13.0.0-win64\\lib\\cmake\\llvm"
  12. $Env:CC = "clang-cl"
  13. $Env:CXX = "clang-cl"

如果不需要构建AOT运行时或者编译器

如果不需要 AOT 运行时或者编译器,可以将 CMake 选项 WASMEDGE_BUILD_AOT_RUNTIME 设置为 OFF

  1. cmake -DCMAKE_BUILD_TYPE=Release -DWASMEDGE_BUILD_AOT_RUNTIME=OFF ..

构建 WasmEdge

为应对不同的性能需求,WasmEdge 提供了多种运行时环境和工具。

构建成功后,你可以找到这些 wasmedge 相关工具:

  1. wasmedge 是一个通用的 wasm 运行时。
    • wasmedge 可以解释执行 WASM 文件或者以 AOT 模式执行一个编译过的 WASM dyld 文件。
    • 在构建 WasmEdge 时,可以设置 CMake 选项 WASMEDGE_BUILD_TOOLSOFF 来不构建所有工具。
  2. wasmedgec 是一个 AOT WASM 编译器。
    • wasmedgec 将一个 WASM 格式的文件编译为dll 格式文件。
    • 如果你不需要构建 AOT 编译器,可以将 CMake 选项 WASMEDGE_BUILD_AOT_RUNTIME 设置为 OFF
  3. libwasmedge_c.dll 是 WasmEdge 的 C API 共享库.
    • libwasmedge_c.dll 为 AOT 编译器和 WASM 运行时提供 C API。
    • CMake 选项 WASMEDGE_BUILD_AOT_RUNTIME 设置为 OFF 后,调用与 AOT 编译器相关的 API 只会返回失败值。
    • 如果你不需要构建共享库,可以将 CMake 选项 WASMEDGE_BUILD_SHARED_LIB 设置为 OFF
  1. $vsPath = (vswhere -latest -property installationPath)
  2. Import-Module (Join-Path $vsPath "Common7\Tools\Microsoft.VisualStudio.DevShell.dll")
  3. Enter-VsDevShell -VsInstallPath $vsPath -SkipAutomaticLocation -DevCmdArguments "-arch=x64 -host_arch=x64 -winsdk=10.0.19041.0"
  4. cmake -Bbuild -GNinja -DCMAKE_SYSTEM_VERSION=10.0.19041.0 -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDLL "-DLLVM_DIR=$llvm_dir" -DWASMEDGE_BUILD_TESTS=ON -DWASMEDGE_BUILD_PACKAGE="ZIP" .
  5. cmake --build build

运行内置测试

以下内置测试仅在 CMake 编译选项 WASMEDGE_BUILD_TESTSON 时可用。

用户可以用这些测试来验证自己构建的 WasmEdge 二进制文件的正确性。

  1. $vsPath = (vswhere -latest -property installationPath)
  2. Import-Module (Join-Path $vsPath "Common7\Tools\Microsoft.VisualStudio.DevShell.dll")
  3. Enter-VsDevShell -VsInstallPath $vsPath -SkipAutomaticLocation -DevCmdArguments "-arch=x64 -host_arch=x64 -winsdk=10.0.19041.0"
  4. $Env:PATH += ";$pwd\\build\\lib\\api"
  5. cd build
  6. ctest --output-on-failure
  7. cd -

运行应用

下一步,请按照该指导 使用 wasmedge 运行 WebAssembly 字节码程序。