如何编译1.1.2中的程序与1.1.1中编译的依赖项?

时间:2013-08-13 08:47:19

标签: compilation go upgrade

每次尝试编译我的程序(今天早上)升级后从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命令是什么?

1 个答案:

答案 0 :(得分:4)

实际解决方案:

我转载了这个问题:

  • 直接拨打1.1.2 go.exe(我的路径中没有%GOROOT%\bin
  • GOROOT指向前面的1.1.1安装文件夹(我保持1.1.1和1.1.2安装在单独的文件夹中)。

如果您坚持使用默认设置(例如:一个 C:\go安装目录,%GOROOT%\bin中设置PATH,则不会看到这个错误。

但如果你确实看到了这个错误:

  • 确保%GOROOT%与您呼叫的go.exe一致
  • go install -a,如下所述。下面提到的go clean不是必需的 作为jnml comments
  

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


原始解决方案:

在“Command go”页面的“删除对象文件”部分中,我错过了go clean -i选项:

-i
  

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

这些.a文件(如hopwatch.a)正是安装程序为库生成的(在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:预览选项)。
在实际删除任何内容之前确定要删除的内容并没有什么坏处。