javascript 这门语言的性能无法与原生的C/C++代码相媲美,为了进一步提高网页的性能,业界推出了WebAssembly技术:将C语言编译成了浏览器可以执行的wasm文件。WebAssembly不仅提高了网页的性能,而且还可以完成原来javascript无法实现的功能。

要想使用WebAssembly,就需要通过Emscripten编译器将C语言编译成wasm文件,但是官方安装教程不够细致,可能会让开发者造成困惑而导致安装失败(本宝宝就失败了好多次,所以觉得有必要写本文)。

PS:本文是windows系统Emscripten编译器安装教程

步骤一:克隆emsdk仓库

# 克隆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下载的,经常会下载失败。

好在第一次执行 emsdk install latest 成功下载并安装的东西,当你再次执行 emsdk install latest 的时候并不需要重新下载安装,所以如果你发现emscripten-x.xx.xx.zip下载失败,可以复制命令行中的下载地址,使用迅雷先下载好,按照命令行中的保存路径,事先将.zip放到那个路径下面,事情就解决了。

# 生成 ~/.emscripten 文件,激活配置
emsdk activate latest

最后,双击emsdk目录下的emsdk_env.bat文件配置环境变量,不过我虽然双击了,但是环境变量并没有被设置。如何判断环境变量是否配置成功呢?可以使用命令行工具在非emsdk目录下,执行emcc -v,看看结果是不是类似下面:

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>

如果是,那么恭喜你已经安装成功了。可以忽略步骤三了。

步骤三:配置环境变量

打开刚才克隆下来的emsdk文件夹,双击执行emcmdprompt.bat文件,可以看到如下内容(我把emsdk克隆到了D:\Application\下,所以下面有很多D:\Application\,实际情况以你们克隆保存目录为准):

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.36Setting 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 检查是否配置成功。

步骤四:编译第一个wasm文件

在其他文件夹新建一个 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.

Emscripten编译器安装教程,亲测成功编译出第一个WebAssembly相关推荐

  1. geonode geoserver win10 安装教程(亲测)

    geonode geoserver  win10 安装教程(亲测) 目录 0. geonode简介 1.相关链接 2.安装步骤 3. 遇到的坑 0. geonode简介 GeoNode 是一个地理空间 ...

  2. WebODM win10安装教程(亲测)

    WebODM win10安装教程(亲测) 目录 0.为什么要用WebODM 1.参考链接 2.安装步骤 0.为什么要用WebODM 用于航拍图像生成三维重建.三维建模等,界面更简单(比较命令行方式)! ...

  3. flash player安装教程--亲测有效

    flash player安装教程--亲测有效 安装步骤 平日工作中 经常会遇到视频播放有问题,此时,一般提示安装flash player,但是按照提示步骤 根本不起作用,毫无思路,此时可参考我的安装步 ...

  4. 下载安装mathtype并导入Word | 保姆机安装教程 亲测有效 一次成功 科研必备

    1.官网下载mathtype 链接 我的是Win10 下载的是第二个 中文版 下载完成 打开进行安装 我把它放在E盘 新建了mathtype文件夹 2.查看Word版本 打开word 点文件→账户→关 ...

  5. 超详细的pytorch版本yolov3安装教程--亲测有效!!!

    前言 最近在进行一个工程项目,需要使用yolo算法来实现.首先就选择了yolov3来进行demo实现,因为yolov3在YOLO系列中也是非常经典的一个版本.网上有很多环境配置教程,但是很多教程的讲述 ...

  6. ubuntu 20.04 安装 微信,QQ等客户端,一键安装,亲测成功,最新更新,优麒麟

    之前一直使用网页版微信,但是聊天记录完全无法存留,一旦断网就会退出登录,然后每次登录都要确认,很麻烦. 要是有ubuntu下的微信客户端就好了,但是并不是所有的客户端都一样好用,博主安装并实测了几个u ...

  7. centos7.9使用rpm安装Jenkins_亲测成功---持续集成部署Jenkins工作笔记0022

    以前我们是在linux上安装了一个tomcat,然后把Jenkins的war包放到 对应的web目录里,跑起来的,这样的方式去安装的Jenkins. 1.首先如果以前安装过jenkins的话,需要彻底 ...

  8. 安装RHEL7配置本地yum源 -- yum不能安装时,在本地安装,亲测成功

    RHEL7 本地yum源配置 我们在安装Redhat的时候一般都不会填写注册信息,因为该产品是要购买的,所以我们在使用安装好的Redhat时有的功能是受限的,使用yum源install就是其中之一.那 ...

  9. Microsoft Office for Mac最新版本安装教程,亲测可用

    办公必备的Office工具,它为需要使用 Office 工具的用户和企业设计,让他们可以利用功能强大的 Outlook 来处理电子邮件.日历和通讯录事宜.你所熟知和信赖的 Office 经过更新后,可 ...

最新文章

  1. 虚拟机里Centos7的IP地址查看方法
  2. 从零开始学习python-从零开始学习python(一)
  3. springMVC 前后台日期格式传值解决方式之二(共二) @InitBinder的使用
  4. 作者:胡青青(1984-),女,现就职于中国人民银行征信中心数据部,主要研究方向为数据挖掘。...
  5. 【Flink】Flink 1.12.2 SlotManager
  6. 从零开始学前端:HTML的一些文本格式化标签、快捷键、和特殊符号 --- 今天你学习了吗?(CSS:Day02)
  7. 第四次博客:循环单链表解决约瑟夫环问题
  8. RACCommand
  9. Android 中 shape 各种属性详细介绍
  10. 拆解ONES,从ONES深挖项目研发管理机制
  11. 互联网医疗的千姿百态:火热、亏损、巨头亲赖
  12. 苹果开发者注册设备异常记录
  13. ARM中的紧耦合内存(TCM)
  14. 肺癌治疗正式开启“免疫时代”
  15. 在studio one中使用iZotope Ozone 9?臭氧9怎么导入到Logic Pro X和AU中?速看教程
  16. Ubuntu9.04 mplayer中文字幕乱码解决
  17. 3. codeblocks导入一个存在的项目
  18. Android 基于dkPlayer实现抖音列表播放
  19. 华为AppGallery常用跳转与链接详解
  20. 记一次清除浏览器广告的经历

热门文章

  1. Linux中_Ubuntu上_使用命令总结整理_02
  2. foxmail 企业邮箱密码修改
  3. 公务员考试常识!!!
  4. 表单验证插件:jQuery Validation Engine
  5. 什么是JavaAgent?
  6. 设计一个高并发、高可用秒杀系统
  7. 《MATLAB 神经网络43个案例分析》:第30章 基于随机森林思想的组合分类器设计——乳腺癌诊断
  8. 2021年中国直播电商用户数量、成交额及企业数量分析[图]
  9. Mybatis注解开发(超详细)
  10. 跨域问题JAVA后台设置cors跨域中关于access-control-allow-headers导致的错误