文档没有说build
vs vs install
做什么
我的期望是它就像make install
; 即它需要编译的东西并放入它的最终位置(/usr/local/bin/my_new_toy
或其他任何东西),但似乎它放入了东西GOROOT/bin
我可以告诉你做一个make install
- 即把东西放在别的地方吗?或者我只是写一个makefile(请告诉我没有)?
go build
与 go install:
go build
只需编译可执行文件并将其移至目标位置即可。go install
多做一点。它将可执行文件移动到$GOPATH/bin
并缓存所有导入到的非主要软件包$GOPATH/pkg
。如果尚未更改,则缓存将在下一次编译中使用。
go build
和之后的软件包树go install
:. ??? bin ? ??? hello # by go install ??? src ??? hello ??? hello # by go build ??? hello.go
比较完整的参考资料。
如果要将二进制文件转到特定位置,可以使用环境变量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 /箱端起来,二进制文件从/ DIR2/src目录是在/ DIR2 /箱,等等(从$ GOROOT二进制文件在$ GOROOT/src目录结束/箱).
来源:https://groups.google.com/forum/#!topic/golang- nuts/ -mN8R_Fx-7M
它完全超越了我的想法,但你可以随时使用(感谢JimB):
go build -o /path/binary-name