When I run go install
with some of my own package located in %GOPATH%\src
, it will be installed to %GOPATH%\pkg
.
I read that %GOROOT%
and %GOPATH%
folders have similar organization. So I tried go install cmd\cgo
with the %GOROOT%\src\cmd\cgo
package which is part of the golang installation. But the final cgo.exe
is installed to %GOROOT%\pkg\tool\
.
I checked all the *.go
files in the cmd\cgo
folder. They all have a package main
declaration. So I was expecting the final cgo.exe
to be installed to %GOROOT%\bin
.
My questions are:
cgo.exe
is installed to pkg
rather than bin
?tool
part in the pkg\tool
come from? Can I do similar thing for my own package?The go build
command relies on a go tool directory, where build tools are installed (compile.exe
, link.exe
, ...).
And ToolDir
is defined as:
var ToolDir = filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)
So any build tool is in %GOROOT%\pkg\tool\