>  기사  >  백엔드 개발  >  Golang-WASM 컴파일 오류의 원인과 해결 방법은 무엇입니까?

Golang-WASM 컴파일 오류의 원인과 해결 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-23 19:17:30134검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.