Emscripten教程

Emscripten是一种基于LLVM的编译器,理论上能够将任何能够生成LLVM位码的代码编译成javascript的严格子集asm.js,实际上主要用于将C/C++代码编译成asm.js。本文主要介绍Emscripten的安装过程。

下载和安装

从源码编译安装十分麻烦,推荐安装核心的Emscripten SDK。以Windows为例,先使用如下命令下载emsdk。

1
2
3
4
5
# Get the emsdk repo
git clone https://github.com/juj/emsdk.git

# Enter that directory
cd emsdk

再使用如下命令安装配置Emscripten。

1
2
3
4
5
6
7
8
9
10
11
# Fetch the latest registry of available tools.
.\emsdk.bat update

# Download and install the latest SDK tools. Need install Python first.
.\emsdk.bat install latest

# Make the "latest" SDK "active" for the current user. (writes ~/.emscripten file)
.\emsdk.bat activate latest

# Activate PATH and other environment variables in the current terminal
.\emsdk_env.bat

验证

使用如下命令验证Emscripten是否安装配置正确。

1
2
3
4
5
6
7
8
# Enter that directory
cd emsdk

# Activate PATH and other environment variables in the current terminal
.\emsdk_env.bat

# Verifying Emscripten
emcc.bat -v

运行

如果验证通过,即可使用Emscripten编译C/C++代码到asm.js。

创建名为helloWorld.cpp的文件,其内容如下:

1
2
3
4
5
6
#include <stdio.h>

int main() {
printf("hello, world!\n");
return 0;
}

使用如下命令编译:

1
emcc.bat helloWorld.cpp

编译后将生成a.out.js和a.out.wasm两个文件。后者是包含编译后代码的WebAssembly文件,前者是用于加载和执行后者的Javascipt文件。使用如下命令测试编译后生成的代码,将输出“hello,world!”。

1
node a.out.js

参考链接

  1. http://kripken.github.io/emscripten-site/docs/introducing_emscripten/about_emscripten.html. by kripken.