WebAssembly编程实践(1.2)Hello World

说明:从今天开始,订阅号“玄说前端”开始转载《C/C++面向wasm编程——Emscripten工程实践》系列教程(名字太长,转载以《WebAssembly编程实践》为题)。

本教程原文地址:https://3dgen.cn/cppwasm-book/。

  • 作者:丁尔男,Github @3dgen
  • 作者:柴树杉,Github @chai2010,Twitter @chaishushan
  • 项目地址:https://github.com/3dgen/cppwasm-book

----------------------------------------------------------------------------------

1.2 你好,世界!

本节将从经典的helloworld例程入手,介绍如何使用Emscripten编译C/C++代码并运行测试。

1.2.1 生成wasm

新建一个名为hello.cc的C源文件,为了正确标识中文字符串,将其保存为UTF8编码:

//hello.cc#include <stdio.h>int main() {    printf("你好,世界!\n");    return 0;
}

进入控制台,使用1.1节中介绍的emsdk_env命令设置Emscripten环境变量后,切换至hello.cc所在的目录,执行:

emcc hello.cc

目录下将得到两个文件:a.out.wasm以及a.out.js。其中a.out.wasm为C源文件编译后形成的WebAssembly汇编文件;a.out.js是Emscripten生成的胶水代码,其中包含了Emscripten的运行环境和wasm的封装,导入a.out.js即可自动完成.wasm载入/编译/实例化、运行时初始化等繁杂的工作。

使用-o选项可以指定emcc的输出文件,执行下列命令:

emcc hello.cc -o hello.js

编译后的成果文件分别为hello.wasm以及hello.js

1.2.2 在网页中测试

.......略

原文发布于微信公众号 - 玄魂工作室(xuanhun521)

原文发表时间:2018-11-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端杂货铺

高吞吐koa日志中间件

Midlog中间件 node服务端开发中少不了日志打点,而在koa框架下的日志打点在多进程环境中日志信息往往无法对应上下文,而且在高并发下直接进行写buffer...

594100
来自专栏抠抠空间

Django之auth模块(用户认证)

auth模块简介 auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从user表里查询有没有用户名和密码符合的对象, 而有了a...

49650
来自专栏Clive的技术分享

cgi、fastcgi及php-fpm分别是什么cgifastcgiphp-fpm

cgi cgi是通用网关接口定义。当web server收到/index.php这个请求后,会启动对应的CGI程序,这里就是PHP的解析器。接下来PHP解析器会...

31260
来自专栏lestat's blog

Vue开发中的一些总结

关于axios的使用细节 基于vue做spa开发,个人很多时候使用的请求扩展是axios,这个扩展会把常用的请求封装好发送出去,使用的时候只需要传参数即可。今天...

32470
来自专栏枕边书

PHP模拟发送POST请求之四、加强file_get_contents()发送POST请求

使用了笨重fsockopen()方法后,我们开始在PHP函数库里寻找更简单的方式来进行POST请求,这时,我们发现了PHP的文件函数也具有与远程URL交互的功能...

22480
来自专栏代码GG之家

深入Android源码系列(二) HOOK技术大作战

漫天的标题党的口水文打赏爆表,冷落了一群默默输出高质量文章的人群。真正的技术文章能否得到认可? 本文讲解内容有 hook技术原理探究 ...

28050
来自专栏Java编程技术

SpringBoot之spring-boot-load模块

正常情况下classloader只能找到jar里面当前目录或者文件类里面的*.class文件。为了能够加载嵌套jar里面的资源之前都是把嵌套jar里面的clas...

14120
来自专栏自由而无用的灵魂的碎碎念

解决source insight 3.5遇到的parse too comples错误

我使用source insight 编写c,编写代码的时候,source insight的symbol windows可能会提示parse too comple...

13720
来自专栏Android随笔

mac学习笔记

在打开的文本文件中,添加如下内容(/XXX/XXX/platform-tools/为你的adb路径)

8520
来自专栏JAVA技术站

maven使用常见问题 转

1、在dependencyManagement里面加入包括版本在内的依赖信息,如: 

8510

扫码关注云+社区

领取腾讯云代金券