Skip to main content

Li Zheng flyskywhy@gmail.com

emsdk 使用详解

emsdk 可以将 C 代码编译为可以被 JS 调用的 WebAssembly 格式。

安装 emsdk

cd ~/tools/ git clone https://github.com/emscripten-core/emsdk.git cd emsdk ./emsdk install latest ./emsdk activate latest

使用 emsdk 编译出 .js.wasm

source ~/tools/emsdk_env.sh

手动修改比如 C++ 项目中的 Makefile ,使达到这样的意图

CC=emcc AR=emar

如果 Makefile 本来可以编译出 .so.a 文件的,则在 Makefile 中再多加如下语句就可以得到所需的 .js 文件

emcc -O2 some.a -o some.js
-s TOTAL_MEMORY=314572800
-s MODULARIZE=1 -s EXPORT_NAME=SomeCUtils
-s EXPORTED_FUNCTIONS='["_someCFunc"]'
-s EXTRA_EXPORTED_RUNTIME_METHODS='["ccall"]'

最后进入 C++ 项目目录运行如下语句

emmake make

即可。

如果 C++ 项目原来是用 configure 或 CMAKE 自动生成 Makefile 的,则参考 Building Projects — Emscripten documentation 进行相应操作即可。

在 JS 中调用 .js 文件

可自行参考