Wasmtime 및 Wasm3을 사용하여 Golang에서 Wasm 컴파일로의 오류
GOOS=js를 사용하여 Golang 코드를 WebAssembly(Wasm)로 컴파일 GOARCH=wasm go build -o main.wasm은 Wasmtime 또는 Wasm3으로 실행할 때 오류가 발생할 수 있습니다. 오류를 조사하고 가능한 해결 방법을 살펴보겠습니다.
Wasmtime 오류:
Error: failed to run main module `main.wasm` Caused by: 0: failed to instantiate "main.wasm" 1: unknown import: `go::debug` has not been defined
이 오류는 Wasmtime이 런타임 중에 해결되지 않은 가져오기(go::debug)를 발견했음을 나타내며, 이는 컴파일된 Wasm 모듈에 이에 대한 정의가 부족함을 나타냅니다. import.
Wasm3 오류:
Error: function lookup failed ('_start')
Wasm3에서 함수 조회 중에 오류가 발생했습니다. Wasm 모듈은 진입점 함수(_start)를 정의하지 않습니다.
해결책:
제공된 응답에 따르면 원래 접근 방식은 Golang을 Wasm 외부에서 컴파일할 때 제한이 있습니다. 브라우저. 오류를 해결하려면 다음 옵션이 제안됩니다.
wasm_exec.js shim과 함께 Node.js를 사용하세요.
node wasm_exec.js main.wasm
이를 통해 브라우저 환경 외부에서 실행할 수 있습니다.
TinyGo 및 Wasi 지원으로 컴파일:
tinygo build -target=wasi -o main.wasm main.go
TinyGo는 Wasmtime과 함께 작동하는 Wasi를 사용한 Wasm 컴파일을 지원합니다.
실험적 Wasm 지원을 통한 Golang 컴파일:
GOOS=wasip1 GOARCH=wasm gotip build -o main.wasm
이를 위해서는 소스에서 Go를 컴파일하고 최신 실험 기능을 활성화해야 하지만 허용해야 합니다. Wasmtime으로 직접 실행하려면.
이러한 특정 오류의 경우 옵션 1(wasm_exec.js와 함께 Node.js 사용) 또는 옵션 2(TinyGo 및 Wasi로 컴파일)를 시도하는 것이 좋습니다. 지원) Wasmtime을 사용하여 독립 실행형으로 실행하려는 경우.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3