Ошибки при компиляции 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 снаружи браузер. Для устранения ошибок предлагаются следующие варианты:
Использовать Node.js с оболочкой wasm_exec.js:
node wasm_exec.js main.wasm
Это позволяет выполнять выполнение вне среды браузера.
Компилировать с поддержкой TinyGo и Wasi:
tinygo build -target=wasi -o main.wasm main.go
TinyGo обеспечивает поддержку компиляции в Wasm с помощью Wasi, которая должна работать с Wasmtime.
Экспериментально Компиляция Golang с поддержкой Wasm:
GOOS=wasip1 GOARCH=wasm gotip build -o main.wasm
Это требует компиляции Go из исходных кодов и включения новейших экспериментальных функций, но должно позволять для прямого выполнения с помощью Wasmtime.
Для этих конкретных ошибок предлагается попробовать вариант 1 (использование Node.js с wasm_exec.js) или вариант 2 (компиляция с помощью TinyGo и Wasi). поддержка), если требуется автономная работа с Wasmtime.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3