你使用的Go版本是什么( go version
)?
go version go1.12 darwin/amd64
这个问题在最新版本中是否重现?
是的
你正在使用什么操作系统和处理器架构( go env
)?
go env
输出
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/jamesclarke/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/jamesclarke/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/jamesclarke/Source/Temp/gotest/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/6m/dh9gmlhd00g9qkdsv86pj2dw0000gn/T/go-build486175678=/tmp/go-build -gno-record-gcc-switches -fno-common"
你做了什么?
- 创建一个新项目
- go mod init gitHub.com/foo/bar
- 创建一个包含以下内容的hello.go文件:
package main
import (
"golang.org/x/crypto/ssh/terminal"
)
func main() {
_, err := terminal.MakeRaw(0)
if err != nil {
log.Fatal(err)
}
}
- go build
你期望看到什么?
程序编译成功
你看到了什么?
go build
# golang.org/x/sys/unix
../../../go/pkg/mod/golang.org/x/sys@v0.0.0-20190225065934-cc5685c2db12/unix/fcntl_darwin.go:15:42: undefined: Flock_t
../../../go/pkg/mod/golang.org/x/sys@v0.0.0-20190225065934-cc5685c2db12/unix/ioctl.go:14:47: undefined: Winsize
../../../go/pkg/mod/golang.org/x/sys@v0.0.0-20190225065934-cc5685c2db12/unix/ioctl.go:25:47: undefined: Termios
../../../go/pkg/mod/golang.org/x/sys@v0.0.0-20190225065934-cc5685c2db12/unix/sockcmsg_unix.go:50:18: undefined: Cmsghdr
../../../go/pkg/mod/golang.org/x/sys@v0.0.0-20190225065934-cc5685c2db12/unix/sockcmsg_unix.go:56:9: undefined: Cmsghdr
尝试使用go get golang.org/x/sys并构建仍然失败
5条答案
按热度按时间unftdfkk1#
(CC @jayconrod)
从错误信息中的所有缺失声明都来自
ztypes_darwin_amd64.go
,所以这听起来像是从提取的模块中某种程度上丢失了该文件。你是否偶然使用了这个版本的
golang.org/x/sys
与之前的 Go 工具链版本一起使用,特别是与同时调用go
命令一起使用?如果没有,请保存您主模块的
go.mod
和go.sum
文件,并将$GOPATH/pkg/mod/cache/download/golang.org/x/sys/@v
和$GOPATH/pkg/mod/golang.org/x/sys@v0.0.0-20190225065934-cc5685c2db12
目录树的内容(供后续调查)保存到一个 (最好是一个tar
或zip
归档文件)中,然后运行go clean -modcache
以查看模块是否有相同的方式被损坏。e1xvtsh32#
我特别想知道:
a. 缺失的文件是否存在于该模块版本的
.zip
文件中?b. 是否有其他文件存在于
.zip
文件中,但缺失于模块的解压缩副本中?qaxu7uf23#
我已经安装了之前的Go版本,但没有同时调用go cmd。go clean -modcache确实解决了问题,如果你感兴趣,我有存档。
qq24tv8q4#
请务必附上档案。(可能不会有新的线索,但你永远不知道...)
uujelgoq5#
在这里
Archive.zip