javascript 这门语言的性能没法与原生的C/C++代码相媲美,为了进一步提升网页的性能,业界推出了WebAssembly技术:将C语言编译成了浏览器能够执行的wasm文件。WebAssembly不只提升了网页的性能,并且还能够完成原来javascript没法实现的功能。javascript
要想使用WebAssembly,就须要经过Emscripten编译器将C语言编译成wasm文件,可是官方安装教程不够细致,可能会让开发者形成困惑而致使安装失败(本宝宝就失败了好屡次,因此以为有必要写本文)。html
PS:本文是windows
系统Emscripten编译器安装教程java
# 克隆emsdk仓库,并执行安装 git clone https://github.com/juj/emsdk.git
# 定位到emsdk文件夹 cd emsdk # 执行 update emsdk update # 安装各类工具 emsdk install latest
在执行emsdk install latest
会下载安装不少东西,时间会有些久,最后一个须要下载的东西(emscripten-x.xx.xx.zip
)是从github下载的,常常会下载失败。node
好在第一次执行 emsdk install latest 成功下载并安装的东西,当你再次执行 emsdk install latest 的时候并不须要从新下载安装,因此若是你发现emscripten-x.xx.xx.zip
下载失败,能够复制命令行中的下载地址,使用迅雷先下载好,按照命令行中的保存路径,事先将.zip放到那个路径下面,事情就解决了。python
# 生成 ~/.emscripten 文件,激活配置 emsdk activate latest
最后,双击emsdk目录下的emsdk_env.bat
文件配置环境变量,不过我虽然双击了,可是环境变量并无被设置。如何判断环境变量是否配置成功呢?可使用命令行工具在非emsdk目录下,执行emcc -v
,看看结果是否是相似下面:git
C:\Users\Administrator>emcc -v emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 1.37.36 clang version 5.0.0 (emscripten 1.37.36 : 1.37.36) Target: x86_64-pc-windows-msvc Thread model: posix InstalledDir: D:\Application\emsdk\clang\e1.37.36_64bit INFO:root:(Emscripten: Running sanity checks) C:\Users\Administrator>
若是是,那么恭喜你已经安装成功了。能够忽略步骤三了。github
打开刚才克隆下来的emsdk文件夹,双击执行emcmdprompt.bat
文件,能够看到以下内容(我把emsdk克隆到了D:\Application\下,因此下面有不少D:\Application\,实际状况以大家克隆保存目录为准):windows
Adding directories to PATH: PATH += D:\Application\emsdk\clang\e1.37.36_64bit PATH += D:\Application\emsdk\node\8.9.1_64bit\bin PATH += D:\Application\emsdk\python\2.7.13.1_64bit\python-2.7.13.amd64 PATH += D:\Application\emsdk\java\8.152_64bit\bin PATH += D:\Application\emsdk\emscripten\1.37.36 Setting environment variables: EMSDK = D:/Application/emsdk BINARYEN_ROOT = D:\Application\emsdk\clang\e1.37.36_64bit\binaryen JAVA_HOME = D:\Application\emsdk\java\8.152_64bit EMSCRIPTEN = D:\Application\emsdk\emscripten\1.37.36
这堆东西用来让你配置环境变量的,右键个人电脑 -> 属性 -> 高级系统设置 -> 环境变量,在系统变量的Path值中添加:浏览器
D:\Application\emsdk\clang\e1.37.36_64bit;D:\Application\emsdk\node\8.9.1_64bit\bin;D:\Application\emsdk\python\2.7.13.1_64bit\python-2.7.13.amd64;D:\Application\emsdk\java\8.152_64bit\bin;D:\Application\emsdk\emscripten\1.37.36
新建系统变量EMSDK,值设置为D:/Application/emsdk
新建系统变量BINARYEN_ROOT,值设置为D:\Application\emsdk\clang\e1.37.36_64bit\binaryen
新建系统变量JAVA_HOME,值设置为D:\Application\emsdk\java\8.152_64bit
新建系统变量EMSCRIPTEN,值设置为D:\Application\emsdk\emscripten\1.37.36
工具
点击肯定退出设置,尝试在其余非emsdk目录执行 emcc -v
检查是否配置成功。
在其余文件夹新建一个 index.c 文件(我参考了这篇文章中代码:让C代码在浏览器中运行):
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <emscripten/emscripten.h> // 一旦WASM模块被加载,main()中的代码就会执行 int main(int argc, char ** argv) { printf("WebAssembly module loaded\n"); } // 返回1-6之间的一随机数 int EMSCRIPTEN_KEEPALIVE roll_dice() { srand ( time(NULL) ); return rand() % 6 + 1; }
而后用命令行工具定位到这个文件夹,执行:
emcc index.c -s WASM=1 -O3 -o index.js
等待片刻以后,你就可以看见生成了两个新文件:
index.js index.wasm
你能够用html引入这个index.js试试(index.wasm必须和index.js在同一路径下)
end.