用途:指导把 C/C++ 通过 Emscripten 编译为 WebAssembly,覆盖 emcc 参数选择、函数导出、内存模型配置、Asyncify 异步化、WASM 调试,以及浏览器与 WASI 目标的选择。
主要能力:安装并激活 emsdk 后使用 emcc 编译;可生成 hello.html 或仅 JS+WASM(-o hello.js)。通过 EMSCRIPTEN_KEEPALIVE 与 -s EXPORTED_FUNCTIONS='["_add"]' 导出 C 函数,配合 EXPORTED_RUNTIME_METHODS、MODULARIZE、EXPORT_NAME,并在 JS 中用 Module._add、ccall、cwrap 调用。内存方面可设置 INITIAL_MEMORY、MAXIMUM_MEMORY、ALLOW_MEMORY_GROWTH、STACK_SIZE,支持 SHARED_MEMORY 与 USE_PTHREADS,提供 _malloc/_free、HEAPU8、UTF8ToString、stringToNewUTF8 等。Asyncify 可用 -s ASYNCIFY 让同步 C 代码在异步环境挂起恢复。优化含 -O0/-O2/-O3/-Os/-Oz 及 wasm-opt 后处理;调试可用 -g、ASSERTIONS、SAFE_HEAP、STACK_OVERFLOW_CHECK。
使用方式与限制:WASM 需经 HTTP 提供,不能直接以 file:// 打开;C 函数导出名需带下划线前缀。WASI 目标可用 emcc --target=wasi 或 wasi-sdk,适用于服务端、CLI、边缘场景,而浏览器目标面向 Web API 与 WebGL。资料未提供具体收费、价格或官方授权信息。