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:
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 は、Wasi を使用した Wasm へのコンパイルのサポートを提供します。これは Wasmtime で動作するはずです。
Wasm サポートによる実験的な Golang コンパイル:
GOOS=wasip1 GOARCH=wasm gotip build -o main.wasm
これには、ソースから Go をコンパイルし、最新の実験的な機能ですが、Wasmtime による直接実行を許可する必要があります。
これらの特定のエラーについては、オプション 1 (wasm_exec.js で Node.js を使用) を試すか、オプション 1 を試すことをお勧めします。 Wasmtime を使用してスタンドアロンで実行する場合は、2 (TinyGo および Wasi サポートを使用してコンパイル)。
以上がWasmtime および Wasm3 を使用して Golang を Wasm にコンパイルする際のエラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。