at backyard

Color my life with the chaos of trouble.

Goでgo:linkname must refer to declared function or variableというエラーが出た際の対応メモ

go-ttyを試そうとしたときに遭遇したエラーと、対応時のメモを記載する。

github.com

go-ttyを試してみようと思い、READMEに書かれているコードを参考にして入力したキーを出力させるだけのコードを書き、実行しようとしたら下記のようなエラーに遭遇した。

なお、実行時の環境は

  • マシンは M1 MacBook Air で、
  • Goのバージョンは go version go1.19 darwin/arm64 である
# golang.org/x/sys/unix
../../go/pkg/mod/golang.org/x/sys@v0.0.0-20191120155948-bd437916bb0e/unix/syscall_darwin.1_13.go:25:3: //go:linkname must refer to declared function or variable
../../go/pkg/mod/golang.org/x/sys@v0.0.0-20191120155948-bd437916bb0e/unix/zsyscall_darwin_arm64.1_13.go:27:3: //go:linkname must refer to declared function or variable
../../go/pkg/mod/golang.org/x/sys@v0.0.0-20191120155948-bd437916bb0e/unix/zsyscall_darwin_arm64.1_13.go:40:3: //go:linkname must refer to declared function or variable
../../go/pkg/mod/golang.org/x/sys@v0.0.0-20191120155948-bd437916bb0e/unix/zsyscall_darwin_arm64.go:28:3: //go:linkname must refer to declared function or variable
../../go/pkg/mod/golang.org/x/sys@v0.0.0-20191120155948-bd437916bb0e/unix/zsyscall_darwin_arm64.go:43:3: //go:linkname must refer to declared function or variable
../../go/pkg/mod/golang.org/x/sys@v0.0.0-20191120155948-bd437916bb0e/unix/zsyscall_darwin_arm64.go:59:3: //go:linkname must refer to declared function or variable
../../go/pkg/mod/golang.org/x/sys@v0.0.0-20191120155948-bd437916bb0e/unix/zsyscall_darwin_arm64.go:75:3: //go:linkname must refer to declared function or variable
../../go/pkg/mod/golang.org/x/sys@v0.0.0-20191120155948-bd437916bb0e/unix/zsyscall_darwin_arm64.go:90:3: //go:linkname must refer to declared function or variable
../../go/pkg/mod/golang.org/x/sys@v0.0.0-20191120155948-bd437916bb0e/unix/zsyscall_darwin_arm64.go:105:3: //go:linkname must refer to declared function or variable
../../go/pkg/mod/golang.org/x/sys@v0.0.0-20191120155948-bd437916bb0e/unix/zsyscall_darwin_arm64.go:121:3: //go:linkname must refer to declared function or variable
../../go/pkg/mod/golang.org/x/sys@v0.0.0-20191120155948-bd437916bb0e/unix/zsyscall_darwin_arm64.go:121:3: too many errors

ひとまずエラーメッセージでぐぐってみると、Goの下記のissueにたどり着いた。

github.com

ここのissueの最後に書かれている、下記のコマンドを実行することで無事に go-tty のコードを実行することができた。

go get -u golang.org/x/sys

以上、備忘録でした。