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

标签 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来自?我可以为自己的包裹做类似的事情吗?

最佳答案

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

ToolDir定义为:

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

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

关于go - 什么规则决定了 Go 包的安装位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40879451/

相关文章:

function - 如何在golang中返回一个空值?

go - 运行外部 python 脚本并检查退出状态

performance - Go 语言指针性能

go - 定义返回接口(interface) slice 的函数类型

arrays - 将空间分隔的整数存储到数组中的更整洁的方法?

google-app-engine - Google Datastore - 看不到每个实体组限制每秒 1 次写入

go - 如何创建嵌入不同其他对象的可重用对象?

algorithm - 通过位操作处理负数

go - 不能用方法迭代结构?

scala - 在实践中消息传递并发语言如何优于共享内存并发语言