什么规则决定Go包的安装位置?

时间:2016-11-30 02:54:04

标签: go

当我使用位于go install的我自己的软件包运行%GOPATH%\src时,它将安装到%GOPATH%\pkg

我读到%GOROOT%%GOPATH%文件夹具有相似的组织。所以我尝试go install cmd\cgo使用%GOROOT%\src\cmd\cgo包,这是golang安装的一部分。但最终cgo.exe已安装到%GOROOT%\pkg\tool\

我检查了*.go文件夹中的所有cmd\cgo个文件。他们都有package main声明。所以我希望将最终cgo.exe安装到%GOROOT%\bin

我的问题是:

  • 为什么将cgo.exe安装到pkg而不是bin
  • tool中的pkg\tool部分来自哪里?我可以为自己的包装做类似的事吗?

1 个答案:

答案 0 :(得分:3)

go build命令依赖于go工具目录,其中安装了构建工具(compile.exelink.exe,...)。

ToolDir定义为:

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

所以任何构建工具都在%GOROOT%\pkg\tool\