去安装做什么?


79

该文件说没有什么buildVSinstall

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

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

Answers:


42

如果要将二进制文件转到特定位置,则可以使用环境变量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

7
您也可以直接使用go build -o
JimB

是的,为完整起见,将其添加到答案中。
OneOfOne 2014年

所以go install与go build -o $ GOPATH / bin / <package>是一样的吗?
2014年

1
或多或少,它还将库文件(blah.a)安装到$GOPATH/pkg/
OneOfOne 2014年

49

go buildgo 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

更详细的信息


2
难道go install还建立?还是我需要go build在安装之前运行?
拉斐尔·伊恩

2
@RafaelEyng否,go install足够了,但是它的执行文件在bin/目录中创建
Benyamin Jafari,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.