7

每次我在(今天早上)从 1.1.1 升级到 1.1.2(在 Windows 7 64 位上)之后尝试编译我的程序时,我都会收到如下错误消息:

C:\Users\VonC\prog\go\src\github.com\spf13\hugo>go build -o hugo.exe main.go
# github.com/spf13/hugo/hugolib
hugolib\page.go:23: import C:\Users\VonC\prog\go\pkg\windows_amd64/github.com/emicklei/hopwatch.a: 
  object is [windows amd64 go1.1.1 X:none] 
  expected [windows amd64 go1.1.2 X:none]

我试过了go clean -r,但错误信息仍然存在?

什么是正确clean的使用命令?

4

1 回答 1

4

实际解决方案:

我重现了这个问题:

  • 直接调用 1.1.2 go.exe(我%GOROOT%\bin的路径中没有)
  • GOROOT指向之前的 1.1.1 安装文件夹(我将 go 1.1.1 和 1.1.2 安装在单独的文件夹中)。

如果您坚持使用默认的 go 设置(即:一个 C:\go安装目录,并%GOROOT%\bin在您的PATH.

但是,如果您确实看到此错误:

  • 确保%GOROOT%go.exe你打电话的一致
  • go install -a如下所述。go clean下面提到的将不是必需的。
    作为jnml 评论

Go 构建系统应该找出任何过时的东西$GOPATH/pkg并(传递地)按需重建它。


原始解决方案:

在“ Command go ”页面的“ Remove object files ”部分,我错过了这个选项:go clean -i

-i

-i标志导致 clean 删除相应的已安装存档或二进制文件('go install' 将创建什么)。

而这些.a文件(如 hopwatch.a)正是 go install 为库(在 Windows 中)生成的文件。

所以完整的清理命令,以确保重建一切,将是:

cd C:\Users\VonC\prog\go\src\github.com\spf13\hugo
go clean -r -i
go install -a

这将重建并安装所有内容,包括所有依赖包。

-a实际上是一个构建选项,它强制重新构建已经是最新的包。


像往常一样,go clean -r -n您展示要清理的内容(-n:预览选项)。
在实际删除任何内容之前确定将要删除的内容并没有什么坏处。

于 2013-08-13T08:47:18.873 回答