安装什么去做?

时间:2014-06-05 20:27:51

标签: go

文档没有说明build vs install做什么

我的期望是它像make install;即它需要编译的东西并放入其最终位置(/usr/local/bin/my_new_toy或其他),但似乎它将内容放入GOROOT/bin

我可以告诉你做一个make install - 即把东西放到其他地方吗?或者我只是写一个makefile(请告诉我没有)?

2 个答案:

答案 0 :(得分:26)

如果您希望二进制文件转到特定位置,则可以使用环境变量GOBIN

  

bin /目录包含已编译的命令。每个命令都以。命名   它的源目录,但只有最终元素,而不是整个路径。   也就是说,安装了DIR / src / foo / quux中包含源的命令   DIR / bin / quux,而不是DIR / bin / foo / quux。 foo /被剥离以便你   可以将DIR / bin添加到PATH以获取已安装的命令。 如果   设置GOBIN环境变量,将命令安装到   它命名的目录而不是DIR / bin。

来源:http://golang.org/cmd/go/#hdr-GOPATH_environment_variable

GOBIN=/usr/local/bin/ go install

如果您想要每个项目bin/目录,那么您只需将项目路径附加到GOPATH,但是您必须将代码放在$project-path/src/go install之下$project-path/bin中的所有二进制文件。

export GOPATH=/dir1:/dir2:/dir3
  

如果未设置GOBIN,/ dir1 / src中的二进制文件最终会出现在/ dir1 / bin中,   来自/ dir2 / src的二进制文件最终在/ dir2 / bin中,依此类推(和二进制文件   从$ GOROOT / src结束$ GOROOT / bin)。

来源:https://groups.google.com/forum/#!topic/golang-nuts/-mN8R_Fx-7M

你也可以使用(感谢JimB):

go build -o /path/binary-name

答案 1 :(得分:11)

go buildgo install:

  

go build仅编译可执行文件并将其移至目标位置。   go install多做一点。它将可执行文件移至   $GOPATH/bin并缓存所有导入到的非主要包   $GOPATH/pkg。如果没有,缓存将在下一次编译中使用   改变了。


go buildgo install之后的软件包树:

.
├── bin
│   └── hello  # by go install
└── src 
    └── hello
        ├── hello  # by go build
        └── hello.go

More complete reference