最近研究WebAssembly技术,准备用WebAssembly编译C/C++代码供前端调用。网上看了很多文章,收获很大,现在就遇到的问题做一个记录。

官网关于windows开发环境搭建基本上几句话,写的太简单,看来是把每个人都当资深程序员了。

https://emscripten.org/docs/getting_started/downloads.html

初学者估计会看的一脸懵。网上找了很多文章,都没有特别详细的操作步骤。由于命令行用的不熟,再加上有些文章说用命令安装,数据源来自谷歌,如果没有代理的话可能会下载失败。因此我一开始没有使用官方推荐的方法,而是找了一篇文章,下载了文章中附件emsdk-1.35.0-full-64bit.exe的安装包,安装后的功能基本正常,编写的一个Hello world的C文件也成功编译成了如下图所列的文件:

直接双击打开hello.html,能正常显示:

由于我的目的是编译C/C++生成wasm文件,再引入到前端,用js调用C/C++里面的方法,因此当我再编译一个包含自定义方法的math.c的C文件在前端调用时,代码一直报错找不到这个wasm文件,此时我就开始怀疑安装的这个emsdk是否有问题。

因为官网上最新版本编译hello.c文件生成是这样的:

与我上面贴的自己生成的明显不一样。因此下定决心,把刚安装的emsdk1.35.0卸载了,重新按照官网的步骤安装最新版试试。

由于我第一次用安装文件安装时,它会默认安装在C盘,因此环境变量是自动配置的C盘路径,卸载时环境变量一起被自动清除了。

1、依据官网步骤,首先安装Git(我很早已经安装了),略过。

2、在电脑的其他盘,我的在D盘,创建一个目录D:\devEnv\webAssembly。

3、在webAssembly目录下cmd窗口执行下面命令:

git clone https://github.com/juj/emsdk.git

这个从github上下载很快,1分钟搞定。

4、进入下载好的emsdk目录,继续cmd安装最新版本(这一步就是从谷歌的一个地址下载文件,我尝试了很多遍,一开始执行emsdk install  latest报无法连接服务器,1060等错误,试了半天都不行,最后用下面这行命令终于成功了)

emsdk install --global latest

5、当安装完成配置好后执行激活:

emsdk activate latest

6、配置激活后需要应用环境变量(该步操作在每次打开新的cmd窗口时都需要执行emsdk_env.bat,相当于临时配置。手动永久配置到系统的环境变量里我还没尝试)

emsdk_env.bat

7、验证是否安装成功

emcc -v 不会报错
emcc --clear-cache 不会报错

至此安装完成。可以再尝试编译hello.c生成的文件如下,和官网一致。打开显示正常。

继续编译math.c,在前端调用加法和乘法,成功!

参考文章链接:

https://www.cnblogs.com/jixiaohua/p/10424941.html

https://blog.csdn.net/wangx893175022/article/details/106209322/

在Windows10搭建WebAssembly开发环境的更多相关文章

  1. Windows10搭建PHP7开发环境

    原文:Windows10搭建PHP7开发环境 3年前写了一篇<Windows下搭建PHP开发环境>之后就再也没有碰过PHP了,最近新发布了PHP7然后回去看了一下之前写的文章,发现很多配置 ...

  2. Python3笔记002 - 1.2 搭建python开发环境

    第1章 认识python 1.2 搭建python开发环境 1.2.1 python开发环境概述 python开发环境常见的操作系统: Windows Mac OS Linux 1.2.2 安装pyt ...

  3. 【Hadoop】:Windows下使用IDEA搭建Hadoop开发环境

    笔者鼓弄了两个星期,终于把所有有关hadoop的环境配置好了,一是虚拟机上的完全分布式集群,但是为了平时写代码的方便,则在windows上也配置了hadoop的伪分布式集群,同时在IDEA上就可以编写 ...

  4. 搭建NodeJS开发环境

    Windows10下搭建NodeJS开发环境 ======================================== 下载 NodeJS 安装包,最好使用LTS长期支持正式版 下载见 如下链 ...

  5. 自定义搭建PHP开发环境

    学习了一段时间php了,因为之前是刚接触php,所以用的是集成安装包(wamp).现在想进一步了解apache.mysql.php之间的关系以及提升自己所以进行自定义搭建PHP开发环境.废话不多说,请 ...

  6. 使用virtualenv搭建python3开发环境

    问题描述 环境: CentOS6.5 想在此环境下使用python3进行开发,但CentOS6.5默认的python环境是2.6.6版本. 之前的做法是直接从源码安装python3,替换掉现有的开发环 ...

  7. Windows下搭建PHP开发环境

    PHP集成开发环境有很多,如XAMPP.AppServ......只要一键安装就把PHP环境给搭建好了.但这种安装方式不够灵活,软件的自由组合不方便,同时也不利于学习.所以我还是喜欢手工搭建PHP开发 ...

  8. 搭建Android开发环境附图详解+模拟器安装(JDK+Eclipse+SDK+ADT)

    ——搭建android开发环境的方式有多种,比如:JDK+Eclipse+SDK+ADT或者JDK+Eclipse+捆绑好的AndroidSDK或者Android Studio. Google 决定将 ...

  9. mac os 下搭建android开发环境

    mac os 下搭建android开发环境 周银辉 mac os 下搭建android环境比较方便, 如下几个步骤: 1,安装jdk 先搞清楚自己是否已经安装,在命令行下:java -version, ...

随机推荐

  1. vue中子组件更新父组件

    当在子组件里更改了某些信息且关闭子组件后,需要父组件更新修改后的内容,该如何操作 1.$emit触发 父组件 @add="add(val)" 子组件 this.$emit('add ...

  2. 【情人节选帽子】TCS34725颜色传感器和Python图形界面编程(STM32 HAL库)

    截图 描述: l  STM32 HAL库编程 l  使用模拟IIC通信,方便程序移植 l  Python界面编写,蘑菇头的帽子是什么颜色 l  STM32 HAL库串口通信 l  Python界面使用 ...

  3. Windows 10 自带 free 屏幕截图/录像软件 Game Bar! 不仅仅是game-游戏呦! 高清晰,高保真,perfect!不仅仅是游戏呦!

    good news! good news! good news! 重要的事情说三遍! Windows 10 自带  屏幕截图/录像软件 Game Bar! 以后再也不用第三方的 盗版软件了! 对于Wi ...

  4. Internationalization API & ECMA-402

    Internationalization API & ECMA-402 i18n https://caniuse.com/?search=Internationalization API In ...

  5. vue & vue router & dynamic router

    vue & vue router & dynamic router https://router.vuejs.org/guide/essentials/dynamic-matching ...

  6. uniapp 创建简单的tabs

    tabs组件 <template> <view class="tabs"> <view class="bar" :style=&q ...

  7. NGK公链全面服务旅游经济

    有数据显示,2019 年全球旅游总收入已达 6.5万亿美元, 占全球 GDP 的 7.3%,旅游业发展所创造的收益,于全球经济的重要性,不言而喻. 在旅游产业蓬勃发展的同时,中心化运营模式下却仍存在痛 ...

  8. NGK Global-下一个千亿市场来袭

    6月4日,NGK Global开启了全球巡回路演,NGK全球社区经过激烈的讨论,最终决定由美国社区发起,在纽约举办NGK Global第一场路演. 路演讲师Viko就NGK的IPFS协议以及NGK未来 ...

  9. 最小生成树---普里姆算法(Prim算法)和克鲁斯卡尔算法(Kruskal算法)

    普里姆算法(Prim算法) #include<bits/stdc++.h> using namespace std; #define MAXVEX 100 #define INF 6553 ...

  10. C/C++子函数参数传递,堆栈帧、堆栈参数详解

    本文转载自C/C++子函数参数传递,堆栈帧.堆栈参数详解 导语 因为参数传递和汇编语言有很大联系,之后会出现较多x86汇编代码. 该文会先讲一下x86的堆栈参数传递过程,然后再分析C/C++子函数是怎 ...