我在debian 8.2 3.16.0-4-amd64上使用go version go1.5.1 linux/amd64。 我使用https://golang.org/doc/install安装了golang

这就是我放入~/.profile文件的内容

在我的机器上运行go env会给出此输出

/home/shivams/go中的目录结构为{pkg,src,bin}。 在src目录中,它类似于test/hello.go

如果我在src目录中并运行go run test/hello.go,则它运行得很好。 另外,如果我运行go build test/hello.go,它将在同一目录中创建一个可执行文件hello

但是,如果我尝试运行go install test/hello.go,则会收到此错误
go install: no install location for .go files listed on command line (GOBIN not set)。 如果我显式设置GOBIN,那么我将看不到此错误。

根据我的理解,如果设置了GOPATH,则无需设置GOBIN变量。

我在这里想念什么吗? 这是我第一次尝试并无法正常工作。


如@JimB所述,install是为软件包设计的命令。只是为了给您提供一个清晰的示例,这是运行go env命令时得到的信息。

您将看到GOPATH设置为我的项目根目录~/Code/go/ogolang。现在,让我们看看项目根目录中的内容。

如您所见,我有几个软件包。其中之一是wordtest。我可以在wordswordtest包上使用go install。因此,让我们运行go install words并查看目录发生了什么。

现在,我们可以看到已经为我们创建了一个words二进制文件(在bin目录中),并且可以通过调用./bin/words来运行它。


根据Games Brainiac的说明,在软件包上进行安装工作是正确的。但是,让我在其中添加一些有关使用主目录中的go install创建软件包的详细信息。

看一下上面的目录结构,我在具有源文件handlers.go的文件夹处理程序中创建了一个程序包,我想构建该程序包,我将在处理程序文件夹中运行go build只是显示我们的文件没有编译错误并在这种情况下不返回任何内容。

要使用主文件构建软件包,我们需要在app文件夹中运行go install。这将在$GOPATH/pkg内创建handlers.a包对象,在$GOPATH/bin内创建可执行文件,文件名为(app in this case)文件夹,其中我们使用包main拥有main.go文件。