emcc安装
使用 docker 安装 emcc
docker pull trzeci/emscripten
运行 emcc
sudo docker run --rm -v $(pwd):/src trzeci/emscripten emcc -o /src/hello.html /src/hello.c
sudo docker run --rm -it -v $(pwd):/src apiaryio/emcc /bin/bash
提示
docker -it是一个 Docker 命令,用于以交互模式运行容器。这里的-it 是两个选项的组合:
-i(interactive)选项使得容器在后台运行的同时,允许你打开一个命令行界面与之交互。
-t(tty)选项为容器进程分配一个伪终端。当你使用-t 选项启动容器时,Docker 会在容器内部打开一个命令行界面,这样你就可以像操作普通命令行一样与其交互。
这两个选项通常一起使用,以便在运行容器的同时,能够打开一个命令行界面,方便用户与容器内的进程进行交互。例如,如果你想要在一个容器内打开一个 shell,你可以使用docker run -it <image> /bin/bash命令。
运行时准备就绪的通知机制
<body>
<script>
Module = {};
Module.onRuntimeInitialized = function () {
//do sth.
Module._main();
};
</script>
<script src="hello.js"></script>
</body>
Emscripten 自 v1.38.1 起,默认的编译目标切换为 WebAssembly。如果仍然需要以 asm.js 为编译目标,只需要在调用 emcc 时添加-s WASM=0 参数,例如:
emcc hello.cc -s WASM=0 -o hello_asm.js
WebAssembly 是二进制格式,具有体积小、执行效率高的先天优势。作为比较,上述 emcc 命令生成的 hello_asm.js 内存约 300KB,而 WebAssembly 版本的 hello.js 与 hello.wasm 文件内存加在一起还不到 150KB,因此在兼容性允许的情况下,应尽量以 WebAssembly 为编译目标。
参考资料
- Emscripten
- Emscripten - Getting Started
- 《面向WebAssembly编程:应用开发方法与实践》丁尔男 & 柴树杉