ホームページ  >  記事  >  バックエンド開発  >  Golang から WASM へのコンパイル エラーの原因と解決方法は何ですか?

Golang から WASM へのコンパイル エラーの原因と解決方法は何ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-23 19:17:30129ブラウズ

What Causes and How to Resolve Golang to WASM Compilation Errors?

Golang から WASM へのコンパイル エラーと解決策

コマンド GOOS=js GOARCH=wasm go build を使用して Go コードを WebAssembly (WASM) にコンパイルする-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

wasm3 のエラー:

Error: function lookup failed ('_start')

エラーの意味:

  • wasmtime エラー: このエラーは、main.wasm モジュールをインスタンス化できないことを示しますWebAssembly モジュールは、モジュール内で定義されていない go::debug という名前の関数をインポートするためです。
  • wasm3 error: このエラーは、WebAssembly モジュールに必要な _start 関数が欠落していることを示します。モジュールのエントリ ポイント。

エラーの修正:

次の解決策でこれらのエラーを解決できます:

  1. wasm_exec.js で Node.js を使用します:

    • 次のコマンドを実行します:

      node wasm_exec.js main.wasm
  2. Tinygo でコンパイルします (WASI サポートあり):

    • 次のコマンドを使用します:

      tinygo build -target=wasi -o main.wasm main.go

    これにより、wasmtime で実行できる WASM モジュールが作成されます。

  3. Go で実験的な WASM サポートを有効にします:

    • 次のコマンドを使用して Go をソースからコンパイルします:

      go install golang.org/dl/gotip@latest
      gotip download
    • 次に、次のコマンドを使用して WASM にコンパイルします:

      GOOS=wasip1 GOARCH=wasm gotip build -o main.wasm

    これにより、Go での WASM の実験的サポートが有効になり、wasmtime を使用してモジュールを直接実行できるようになります。

以上がGolang から WASM へのコンパイル エラーの原因と解決方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。