Mac上的Go 1.18构建错误:“unix/系统调用_达尔文. 1_13. go:25:3://go:链接名必须引用声明的函数或变量”

wnavrhmk  于 2023-02-20  发布在  Go
关注(0)|答案(5)|浏览(65)

我在Mac 12+上升级到了Go 1.18。
“go build”失败,错误如下:

# golang.org/x/sys/unix
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/syscall_darwin.1_13.go:25:3:
//go:linkname must refer to declared function or variable
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/zsyscall_darwin_amd64.1_13.go:27:3:
//go:linkname must refer to declared function or variable
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/zsyscall_darwin_amd64.1_13.go:40:3: 
//go:linkname must refer to declared function or variable
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/zsyscall_darwin_amd64.go:28:3: 
//go:linkname must refer to declared function or variable
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/zsyscall_darwin_amd64.go:43:3: 
//go:linkname must refer to declared function or variable
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/zsyscall_darwin_amd64.go:59:3: 
//go:linkname must refer to declared function or variable
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/zsyscall_darwin_amd64.go:75:3: 
//go:linkname must refer to declared function or variable
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/zsyscall_darwin_amd64.go:90:3: 
//go:linkname must refer to declared function or variable
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/zsyscall_darwin_amd64.go:105:3: 
//go:linkname must refer to declared function or variable
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/zsyscall_darwin_amd64.go:121:3: 
//go:linkname must refer to declared function or variable
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/zsyscall_darwin_amd64.go:121:3: 
too many errors

Compilation finished with exit code 2
wgxvkvu9

wgxvkvu91#

这是由旧版本的golang.org/x/sys(在this issue中提到)导致的。修复方法是更新为:

go get -u golang.org/x/sys
8yparm6h

8yparm6h2#

如文件所述,
1.最简单的方法:运行get -u golang.org/x/sys
1.手动:git克隆仓库到$GOPATH/src/golang.org/x/sys

qxgroojn

qxgroojn3#

我遇到了同样的错误,我修复做以下:
我先跑:

go get -u golang.org/x/sys

更新x/sys库。
然后它打印了一些重要的信息:

go: downloading golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e
go: upgraded golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd => v0.0.0-20220704084225-05e143d24a9e

有了它,我转到go.mod,并放置了以下行(在go 1.14行之前):

replace golang.org/x/sys => golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e

最后我跑了:

go mod vendor

然后它更新了所有的库:

go: downloading github.com/hashicorp/go-cleanhttp v0.5.1
go: downloading github.com/hashicorp/go-rootcerts v1.0.0
go: downloading github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db
go: downloading github.com/mitchellh/cli v1.0.0
[...]
go: downloading github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db
go: downloading github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412
go: downloading github.com/Azure/go-autorest/autorest/to v0.4.0

那就没事了

❯ go install .
❯ terraform --version
Terraform v0.13.5

编辑:这里我使用modules,如果不是你的情况设置GO111MODULE=off

gmxoilav

gmxoilav4#

如果go get -u golang.org/x/sys不起作用,请确保删除go.mod中的以下行:

replace golang.org/x/sys => golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6
ttcibm8c

ttcibm8c5#

试试这个,我希望它能解决你和我的问题:

sudo go get golang.org/x/sys@latest

相关问题