升级到Go1.18后,编译报错的解决方法

升级到Go1.18版本后,编译时报错,如下:

# golang.org/x/sys/unix
../vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go:25:3: //go:linkname must refer to declared function or variable
../vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go:27:3: //go:linkname must refer to declared function or variable
../vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go:40:3: //go:linkname must refer to declared function or variable
../vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go:28:3: //go:linkname must refer to declared function or variable
../vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go:43:3: //go:linkname must refer to declared function or variable
../vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go:59:3: //go:linkname must refer to declared function or variable
../vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go:75:3: //go:linkname must refer to declared function or variable
../vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go:90:3: //go:linkname must refer to declared function or variable
../vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go:105:3: //go:linkname must refer to declared function or variable
../vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go:121:3: //go:linkname must refer to declared function or variable
../vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go:121:3: too many errors

解决方法:

go get -u golang.org/x/sys

效果如下:

➜  server ~go get -u golang.org/x/sys

go: downloading golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886
go: upgraded golang.org/x/sys v0.0.0-20200116001909-b77594299b42 => v0.0.0-20220328115105-d36c6a25d886
➜  server ~ go run main.go            
go: inconsistent vendoring in /Users/makesure10/Desktop/goworkspace/src/ddagent:
        golang.org/x/sys@v0.0.0-20220328115105-d36c6a25d886: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        golang.org/x/sys@v0.0.0-20200116001909-b77594299b42: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod

        To ignore the vendor directory, use -mod=readonly or -mod=mod.
        To sync the vendor directory, run:
                go mod vendor
➜  server ~go mod vendor 
➜  server ~ go run main.go

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注