2016-11-30 10 views
3

%GOPATH%\srcにある自分のパッケージの一部でgo installを実行すると、%GOPATH%\pkgにインストールされます。Goパッケージのインストール場所を決定するルールは何ですか?

私は、%GOROOT%%GOPATH%のフォルダには同じような構成のものがあります。だから私は%GOROOT%\src\cmd\cgoパッケージでゴーランインストールの一部であるgo install cmd\cgoを試しました。しかし、最後のcgo.exe%GOROOT%\pkg\tool\にインストールされています。

cmd\cgoフォルダ内の*.go個のファイルをすべて確認しました。彼らはすべてpackage mainの宣言を持っています。最終的にcgo.exe%GOROOT%\binにインストールされることを期待していました。

私の質問は以下のとおりです。

  • cgo.exepkgではなくbinにインストールされているのはなぜ?
  • pkg\tooltool部分はどこから来ますか?自分のパッケージに似たようなことをすることはできますか?
+0

である

var ToolDir = filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH) 

そしてToolDirは、以下のように定義されます。 stdlibとstdツールは異なる扱いを受けます。 – Volker

+0

関連:[go get golang.org/x/tools/cmd/godoc'?](http://stackoverflow.com/questions/33118766/why-is-there-no-を実行すると、バイナリが作成されないのはなぜですか?実行時にgo-get-golang-x-tools-cmd-godoc/33119819#33119819を実行するとバイナリが作成されます) – icza

答えて

3

go buildコマンドは、ビルドツールがインストールされているGOツールのディレクトリ、(compile.exelink.exe、...)に依存しています。だから、任意のビルドツールが行くツールがどのように動作するかだとあなたがあなた自身のコードのためにこれを行うことができないこと%GOROOT%\pkg\tool\

+0

Goは '/'と '\'の間の変換をどのように処理しますか? –

+1

@GregoryNisbet https://golang.org/pkg/path/filepath/#FromSlash。また、:http://stackoverflow.com/a/12132445/6309 – VonC

+0

疑問がある場合は、スラッシュ '/'を使用してください。これはWindowsを含むPOSIXファイルシステムで動作します。 –

関連する問題