Compilation 如何在1.1.2中编译go程序,并在1.1.1中编译依赖项?

Compilation 如何在1.1.2中编译go程序,并在1.1.1中编译依赖项?,compilation,go,upgrade,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.co

每次我尝试在(今天早上)从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]
我尝试了一个
清除-r
,但错误消息仍然存在

正确的
clean
命令是什么?

实际解决方案:

我转载了这个问题:

  • 直接调用1.1.2
    go.exe
    (我的路径中没有
    %GOROOT%\bin
  • 使用
    GOROOT
    指向以前的1.1.1安装文件夹(我将go 1.1.1和1.1.2安装在单独的文件夹中)
如果您坚持使用默认的go设置(即:一个
C:\go
安装目录,以及
%GOROOT%\bin
路径中的
),您将不会看到此错误

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

  • 确保
    %GOROOT%
    与您正在调用的
    go.exe
    一致
  • 安装-a
    ,如下所述。下面提到的
    清理
    是不必要的。
    作为:
Go build系统应该能够在
$GOPATH/pkg
中找出任何过时的东西,并根据需要(过渡地)重建它


原始解决方案:

在“”页面的“删除对象文件”部分,我错过了
清除-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
:预览选项)。

确定哪些内容将被删除并没有什么坏处。。。在实际删除任何内容之前。

我很惊讶,因为Go build系统应该在$GOPATH/pkg中找出任何过时的内容,然后(过渡地)按需重建。@jnml我同意。它忽略了依赖项,但可能是因为我最初没有使用
go build-a
?@jml得到了它。我发现我的go设置不一致,触发了该错误消息。我在下面编辑了我的答案。