Fehler bei der Kompilierung von Golang zu Wasm mit Wasmtime und Wasm3
Kompilieren von Golang-Code zu WebAssembly (Wasm) mit GOOS=js GOARCH=wasm go build -o main.wasm kann bei der Ausführung mit Wasmtime oder Wasm3 zu Fehlern führen. Lassen Sie uns die Fehler untersuchen und mögliche Lösungen erkunden.
Wasmtime-Fehler:
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
Der Fehler weist darauf hin, dass Wasmtime während der Laufzeit auf einen ungelösten Import (go::debug) stößt, was darauf hindeutet, dass dem kompilierten Wasm-Modul hierfür eine Definition fehlt import.
Wasm3-Fehler:
Error: function lookup failed ('_start')
Wasm3 stößt bei der Funktionssuche auf einen Fehler, der darauf hindeutet, dass die Das Wasm-Modul definiert keine Einstiegspunktfunktion (_start).
Lösung:
Laut der bereitgestellten Antwort weist der ursprüngliche Ansatz Einschränkungen auf, wenn Golang außerhalb von Wasm kompiliert wird Der Browser. Zur Behebung der Fehler werden die folgenden Optionen empfohlen:
Verwenden Sie Node.js mit dem Shim wasm_exec.js:
node wasm_exec.js main.wasm
Dies ermöglicht die Ausführung außerhalb der Browserumgebung.
Kompilieren mit TinyGo- und Wasi-Unterstützung:
tinygo build -target=wasi -o main.wasm main.go
TinyGo bietet Unterstützung für die Kompilierung von Wasm mit Wasi, was mit Wasmtime funktionieren sollte.
Experimental Golang-Kompilierung mit Wasm-Unterstützung:
GOOS=wasip1 GOARCH=wasm gotip build -o main.wasm
Dies erfordert das Kompilieren von Go aus Quellen und die Aktivierung der neuesten experimentellen Funktionen, sollte dies aber ermöglichen für die direkte Ausführung mit Wasmtime.
Für diese spezifischen Fehler wird empfohlen, Option 1 (Verwendung von Node.js mit wasm_exec.js) oder Option 2 (Kompilieren mit TinyGo und Wasi) auszuprobieren Unterstützung), wenn eine eigenständige Ausführung mit Wasmtime gewünscht wird.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3