首页 > 其他分享 >学习下开发 WebAssembly

学习下开发 WebAssembly

时间:2023-03-20 10:07:45浏览次数:47  
标签:WebAssembly Emscripten 学习 开发 使用 world 运行 emsdk

学习下开发 WebAssembly_WebAssembly

在过去的几十年里,Web 浏览器作为最流行的跨平台应用经久不衰。从另一个角度看浏览器,它是最受欢迎的应用交付平台之一。想想你使用的所有网站,它们取代了你过去用桌面上运行的软件进行的活动。你仍然在使用软件,但你是通过浏览器来访问它,而且是在别人的 ​​Linux​​ 服务器上运行。在优化我们所有人使用的软件的永恒努力中,软件开发世界早在 2019 年就引入了 WebAssembly,作为通过 Web 浏览器运行编译代码的一种方式。应用的性能比以往任何时候都要好,而且可以生成 WebAssembly 编码的语言远不只是通常的 PHP、Python 和 JavaScript。

一个目标和一种语言

关于 WebAssembly 的一个强大但也最令人困惑的地方是,“WebAssembly” 这个词既指一种语言,也指一个目标。WebAssembly 是一种汇编语言,但没有多少人选择直接用汇编写代码。即使是汇编语言,最终也会被转换为二进制格式,这也是计算机运行代码的要求。这种二进制格式也被称为 WebAssembly。不过这很好,因为这意味着你可以用你选择的语言来写一些最终以 WebAssembly 交付的东西,包括 C、C++、Rust、Javascript 和其他许多语言。

进入 WebAssembly 的途径是 Emscripten,这是一个 LLVM 编译器工具链,可以从你的代码中产生 WebAssembly。

安装 Emscripten

要在你的 Linux 或 macOS 电脑上安装 Emscripten,请使用 Git:

$ git clone https://github.com/emscripten-core/emsdk.git

改变目录进入 emsdk 目录并运行安装命令:

$ ./emsdk install latest
$ ./emsdk activate latest

Emscripten 工具链中的所有内容都安装在 emsdk 目录下,对系统的其他部分没有影响。由于这个原因,在使用 emsdk 之前,你必须 源引source 它的环境:

$ source ./emsdk_env.sh

如果你打算经常使用 emsdk,你也可以在 .bashrc 中加入环境设置​​脚本​​。

要在 Windows 上安装 Emscripten,你可以在 WSL 环境下运行 Linux。

请访问 Emscripten 网站 了解更多安装信息。

Hello World

下面是一个用 C++ 编写的简单的 “Hello World” 应用。

#include 
using namespace std;
int main() {
cout << "Hello world";
return 0;
}

先把它作为你的系统的标准二进制文件来测试:

$ g++ hello.cpp -o world
$ ./world
Hello world

看到它像预期的那样工作,用 emcc 把它构建为 WebAssembly:

$ emcc hello.cpp -o world.html

最后,用 emrun 运行它:

$ emrun ./world.html

emrun 工具是一个用于本地测试的方便命令。当你在服务器上托管你的应用时,emrun 就没有必要了。

学习更多关于 WebAssembly 的知识

使用 WebAssembly 开发可以有很多不同的方向,这取决于你已经知道的东西和你想建立的东西。如果你了解 C 或 C++,那么你可以用这些来写你的项目。如果你正在学习 Rust,那么你可以使用 Rust。甚至 Python 代码也可以使用 Pyodide 模块来作为 WebAssembly 运行。你有很多选择,而且没有错误的开始方式(甚至有 COBOL 到 WebAssembly 的编译器)。如果你渴望开始使用 WebAssembly,

标签:WebAssembly,Emscripten,学习,开发,使用,world,运行,emsdk
From: https://blog.51cto.com/706054oyu/6131792

相关文章

  • 【OSGI】2.走近OSGI-开发第一个Plug-in项目
    上一次我们介绍了什么是OSGI和OSGI在我们的项目中起到了什么作用。这次我们来亲手使用OSGI技术。主要利用Eclipse开发工具提供给我们的plug-in插件工......
  • 悬赏任务app源码(uniapp小程序源码)成品平台搭建及开发
    悬赏任务app源码,从名字本身就可以理解这个PHP项目的流程。通过在线管理员工任务。即使它也可以在Intranet中工作。MySQL数据库是此源代码的最终部分。它易于实施和遵循。它......
  • go语言学习-标准库flag和log
    Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。os.Args获取命令行参数个数packagemainimport("fmt""os")//os.Args//获取命令行参......
  • go语言学习-标准库IO和Strconv
    IO输入输出的底层原理终端其实是一个文件,相关实例如下:os.Stdin:标准输入的文件实例,类型为*Fileos.Stdout:标准输出的文件实例,类型为*Fileos.Stderr:标准错误输出的文件实例,类型......
  • 2023.3.19周学习总结
    一.本周任务进度1.线段树分裂合并学习完,并且练习了几个题2.上周的补题也补完了3.打了一把牛客和两把cf还有一把abc4.学习了斜率优化DP的凸包优化二.......
  • STM32F407 学习 (0) 各种外设功能
      本文对正点原子STM32F4探索者的基本功能及外设作最基本的介绍,随笔者本人的学习进程(基本按照正点原子)而不定时更新,起到总结的作用。一、HAL库编写程序的运行逻辑  ......
  • 3.19学习总结
    1.TextClock(文本时钟)TextClock是在Android4.2(API17)后推出的用来替代DigitalClock的一个控件!TextClock可以以字符串格式显示当前的日期和时间,因此推荐在Android4.2以后......
  • 【VTK学习笔记】VTK基本数据结构_3.2数据对象和数据集
    任务:把几何结构和拓扑结构加入到数据集中1.无拓扑结构1#include<vtkSmartPointer.h>2#include<vtkPoints.h>//几何结构3#include<vtkPolyData.h>//数据集......
  • 学习日记23.3.19
    今天在参考大佬前端代码时发现了一个小东西<htmllang="en">直接百度了一波:<htmllang="en">向搜索引擎表示该页面是html语言,并且语言为英文网站,其"lang"的意思就是“lan......
  • 常用Markdown语法学习
    Markdown语法学习标题语法一共有六级标题一级标题二级标题三级标题四级标题五级标题六级标题用"#"号代表标题等级,"#"号越多,标题等级越低注意!"#"号和标题文字......