Wasmtime 및 Wasm3을 사용한 Golang의 Wasm 컴파일 오류
GOOS=js GOARCH=wasm go를 사용하여 Golang 코드를 WebAssembly(Wasm)로 컴파일 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 모듈에 이 가져오기에 대한 정의가 부족함을 나타냅니다.
Wasm3 오류:
Error: function lookup failed ('_start')
Wasm3에서 함수 조회 중에 오류가 발생했습니다. 모듈은 진입점 함수(_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는 Wasi를 사용하여 Wasm으로의 컴파일을 지원합니다. , 이는 Wasmtime과 함께 작동해야 합니다.
Wasm을 지원하는 실험적인 Golang 컴파일:
GOOS=wasip1 GOARCH=wasm gotip build -o main.wasm
이를 위해서는 소스에서 Go를 컴파일하고 최신 실험 기능이지만 Wasmtime으로 직접 실행할 수 있어야 합니다.
이러한 특정 오류의 경우 옵션 1(wasm_exec.js와 함께 Node.js 사용) 또는 옵션을 시도하는 것이 좋습니다. Wasmtime을 사용하여 독립 실행형으로 실행하려는 경우 2(TinyGo 및 Wasi 지원으로 컴파일).
위 내용은 Wasmtime 및 Wasm3을 사용하여 Golang을 Wasm으로 컴파일할 때 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!