"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como resolver erros ao compilar Golang para Wasm com Wasmtime e Wasm3?

Como resolver erros ao compilar Golang para Wasm com Wasmtime e Wasm3?

Publicado em 2024-11-08
Navegar:464

How to Resolve Errors When Compiling Golang to Wasm with Wasmtime and Wasm3?

Erros na compilação de Golang para Wasm com Wasmtime e Wasm3

Compilação de código Golang para WebAssembly (Wasm) usando GOOS=js GOARCH=wasm go build -o main.wasm pode causar erros ao executar com Wasmtime ou Wasm3. Vamos investigar os erros e explorar possíveis soluções.

Wasmtime Error:

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

O erro indica que o Wasmtime encontra uma importação não resolvida (go::debug) durante o tempo de execução, sugerindo que o módulo Wasm compilado não possui uma definição para isso importar.

Erro Wasm3:

Error: function lookup failed ('_start')

Wasm3 encontra um erro durante a pesquisa de função, sugerindo que o módulo Wasm não define uma função de ponto de entrada (_start).

Solução:

De acordo com a resposta fornecida, a abordagem original tem limitações ao compilar Golang para Wasm fora do navegador. As seguintes opções são sugeridas para resolver os erros:

  1. Use Node.js com o shim wasm_exec.js:

    node wasm_exec.js main.wasm

    Isso permite a execução fora do navegador ambiente.

  2. Compile com suporte para TinyGo e Wasi:

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

    TinyGo fornece suporte para compilação para Wasm com Wasi, que deve funcionar com Wasmtime.

  3. Compilação experimental de Golang com suporte a Wasm:

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

    Isso requer a compilação do Go a partir dos fontes e a ativação dos recursos experimentais mais recentes, mas deve permitir a execução direta com Wasmtime.

Para esses erros específicos, sugere-se tentar a opção 1 (usando Node.js com wasm_exec.js) ou a opção 2 (compilando com suporte TinyGo e Wasi) se estiver executando independente com Wasmtime é desejado.

Declaração de lançamento Este artigo foi reproduzido em: 1729672007 Se houver alguma infração, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3