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
  • 以前のGOROOT1.1.1 インストール フォルダーを指定して (私は go 1.1.1 と 1.1.2 を別のフォルダーにインストールしたままにしました)。

デフォルトの go セットアップ (つまり、 1 つの C:\goインストール ディレクトリ、および%GOROOT%\binPATH) に固執している場合、このエラーは表示されません。

ただし、このエラーが表示される場合:

  • あなたが呼んでいる%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 に答える