«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как устранить ошибки при компиляции Golang в Wasm с помощью Wasmtime и Wasm3?

Как устранить ошибки при компиляции Golang в Wasm с помощью Wasmtime и Wasm3?

Опубликовано 8 ноября 2024 г.
Просматривать:435

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

Ошибки при компиляции Golang в Wasm с помощью Wasmtime и Wasm3

Компиляция кода Golang в WebAssembly (Wasm) с использованием GOOS=js GOARCH=wasm go 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 отсутствует определение для этого import.

Ошибка Wasm3:

Error: function lookup failed ('_start')

Wasm3 обнаруживает ошибку во время поиска функции, что позволяет предположить, что Модуль Wasm не определяет функцию точки входа (_start).

Решение:

Согласно предоставленному ответу, исходный подход имеет ограничения при компиляции Golang в Wasm снаружи браузер. Для устранения ошибок предлагаются следующие варианты:

  1. Использовать Node.js с оболочкой wasm_exec.js:

    node wasm_exec.js main.wasm

    Это позволяет выполнять выполнение вне среды браузера.

  2. Компилировать с поддержкой TinyGo и Wasi:

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

    TinyGo обеспечивает поддержку компиляции в Wasm с помощью Wasi, которая должна работать с Wasmtime.

  3. Экспериментально Компиляция Golang с поддержкой Wasm:

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

    Это требует компиляции Go из исходных кодов и включения новейших экспериментальных функций, но должно позволять для прямого выполнения с помощью Wasmtime.

Для этих конкретных ошибок предлагается попробовать вариант 1 (использование Node.js с wasm_exec.js) или вариант 2 (компиляция с помощью TinyGo и Wasi). поддержка), если требуется автономная работа с Wasmtime.

Заявление о выпуске Эта статья воспроизведена по адресу: 1729672007. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3