软件技术学习笔记

个人博客,记录软件技术与程序员的点点滴滴。

Emscripten docker构建WebAssembly (C++)

C++的构建环境比别的计算机语言要复杂得多,一切从头开始安装是最麻烦的,比如:安装编译器、第三方库等。在容器时代,使用已准备好的Docker镜像就省事多了。在开发WebAssembly C++时,可直接使用Emscripten SDK docker镜像。虽然C++ WebAssembly的构建比较复杂,但是,其生成的目标文件(*.wasm)比GoLang的要小很多,更适合于Web网络传输。

示例代码,见: hello-web-assembly-cpp

继续阅读→

Golang WebAssembly起步

从GoLang 1.11开始,直接支持编译目标为WebAssembly,不需要安装额外的TidyGo。

本文演示GoLang WebAssembly Hello World程序。

1. 编写main.go

package main

import "fmt"

func main() {
    fmt.Println("Hello world!")
}

2. 设置GOARCHGOOS环境变量,编译目标为wasm文件

Linux:

$ GOARCH=wasm GOOS=js go build -o lib.wasm main.go
$ cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" .

Windows Powershell:

$Env:GOOS='js'
$Env:GOARCH='wasm'
go build -o main.wasm
继续阅读→