以前一直把C++转成Webassembly都用的是Emscripten,但是最近发现有个新工具WASI-sdk同样可以用来把C/C++转成webassembly,这里就做一下介绍吧。
WASI简介
WASI 是一种标准化的接口,旨在让WebAssembly 程序能够在不同的宿主环境中运行,同时保持安全性和可移植性。
二进制安装以及使用
export WASI_VERSION=14
export WASI_VERSION_FULL=${WASI_VERSION}.0
wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_VERSION}/wasi-sdk-${WASI_VERSION_FULL}-linux.tar.gz
tar xvf wasi-sdk-${WASI_VERSION_FULL}-linux.tar.gz
export WASI_SDK_PATH=`pwd`/wasi-sdk-${WASI_VERSION_FULL}
CC="${WASI_SDK_PATH}/bin/clang --sysroot=${WASI_SDK_PATH}/share/wasi-sysroot"
$CC foo.c -o foo.wasm
编译安装
cd wasi-sdk
NINJA_FLAGS=-v make package
等待WASI-sdk20正式版
thread支持将在wasi-sdk20中添加。