WebAssembly,简称wasm,是用于浏览器内客户端脚本的低级、可移植的字节码格式,是一种运行在现代网络浏览器中的新型代码、并且提供新的性能特性和效果,对于浏览器下载和加载是有效的。
它是为诸如C、C++和Rust等低级源语言提供一个高效的编译目标而设计的。使用C/C++等语言开发的功能,在编译为wasm后可以在浏览器中运行,并可以得到与本地应用程序接近的运行效率。
现在最常用的wasm编译套件是Emscripten SDK (emsdk),它除了提供把C/C++编译为wasm的编译器,还提供了一组运行库,使用C/C++可以方便地调用JavaScript/浏览器的功能。比如下载文件、管理文件缓存、使用woker模拟多线程支持、把C/C++代码中的OpenGL调用映射到WebGL等。
在Emscripten SDK (emsdk)的安装包中,编译器是以二进制程序的方式存在。龙芯LoongArch架构还没有得到emsdk的官方支持,在安装emsdk时会报告loongarch64是未知的架构,虽然也可以自己下载源码编译,但确实非常麻烦。
但是,在安装了LATX的龙芯电脑上,现在也可以安装并运行x86版本的emsdk。与在x86/Linux下的安装过程相比,仅仅增加了一个步骤,就是修改安装程序所调用的emsdk.py。
安装步骤:
1. 从github下载emsdk(安装程序)的最新版本:
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
git pull
2. 修改emsdk文件夹下的emsdk.py:
用编辑工具打开emsdk.py,搜索“ARCH = 'x86_64'”,到达下图中的位置,然后添加对loongarch64的支持。
在合适的位置增加下面两行内容:
elif machine.endswith('loongarch64'):
ARCH = 'x86_64'
3. 安装emsdk,latest表示最新版本,也可以使用版本号指定要安装的版本。
./emsdk install latest
./emsdk activate latest
source ./emsdk_env.sh
4. 测试:
emcc -v
如果能正确显示版本号,就说明安装成功,可以使用emcc把C/C++程序编译为wasm了。
source ./emsdk_env.sh 是用于设置emsdk的环境变量,每打开一个新的终端窗口都需要运行一次。可以把它加入到终端的环境初始化脚本中自动运行。
6. hello loongarch:
使用最常用的“第一个c程序”来测试emsdk和wasm。
在浏览器中输入 localhost:8080/hello.html 查看运行结果:
浏览器中的 hello.html 是由 emsdk 产生的,开发者也可以仿照文件中的写法,构造自己的 html 文件来调用编译产生的 js 和 wasm 文件。
它是为诸如C、C++和Rust等低级源语言提供一个高效的编译目标而设计的。使用C/C++等语言开发的功能,在编译为wasm后可以在浏览器中运行,并可以得到与本地应用程序接近的运行效率。
现在最常用的wasm编译套件是Emscripten SDK (emsdk),它除了提供把C/C++编译为wasm的编译器,还提供了一组运行库,使用C/C++可以方便地调用JavaScript/浏览器的功能。比如下载文件、管理文件缓存、使用woker模拟多线程支持、把C/C++代码中的OpenGL调用映射到WebGL等。
在Emscripten SDK (emsdk)的安装包中,编译器是以二进制程序的方式存在。龙芯LoongArch架构还没有得到emsdk的官方支持,在安装emsdk时会报告loongarch64是未知的架构,虽然也可以自己下载源码编译,但确实非常麻烦。
但是,在安装了LATX的龙芯电脑上,现在也可以安装并运行x86版本的emsdk。与在x86/Linux下的安装过程相比,仅仅增加了一个步骤,就是修改安装程序所调用的emsdk.py。
安装步骤:
1. 从github下载emsdk(安装程序)的最新版本:
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
git pull
2. 修改emsdk文件夹下的emsdk.py:
用编辑工具打开emsdk.py,搜索“ARCH = 'x86_64'”,到达下图中的位置,然后添加对loongarch64的支持。
在合适的位置增加下面两行内容:
elif machine.endswith('loongarch64'):
ARCH = 'x86_64'
3. 安装emsdk,latest表示最新版本,也可以使用版本号指定要安装的版本。
./emsdk install latest
./emsdk activate latest
source ./emsdk_env.sh
4. 测试:
emcc -v
如果能正确显示版本号,就说明安装成功,可以使用emcc把C/C++程序编译为wasm了。
source ./emsdk_env.sh 是用于设置emsdk的环境变量,每打开一个新的终端窗口都需要运行一次。可以把它加入到终端的环境初始化脚本中自动运行。
6. hello loongarch:
使用最常用的“第一个c程序”来测试emsdk和wasm。
在浏览器中输入 localhost:8080/hello.html 查看运行结果:
浏览器中的 hello.html 是由 emsdk 产生的,开发者也可以仿照文件中的写法,构造自己的 html 文件来调用编译产生的 js 和 wasm 文件。