去安装做什么?

医生对 buildinstall的作用只字未提

我的预期是,它就像 make install; 也就是说,它把编译好的东西放在它的最终位置(/usr/local/bin/my_new_toy或其他什么) ,但似乎它把东西放在 GOROOT/bin

我可以告诉去做一个 make install-即把东西放在别处?或者我只是写一个 makefile (请告诉我没有) ?

150590 次浏览

如果你想要二进制文件到一个特定的位置,你可以使用环境变量:

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

go build vs go install:

go build只是编译可执行文件并将其移动到目的地。 go install所做的稍微多一点。它将可执行文件移动到 并缓存所有导入到 缓存将在下一次编译期间使用 来源还没有改变。


go buildgo install之后的包树:

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

更多详细信息。