去安装不工作

shi*_*ams 2 debian go

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

这是我放在我的~/.profile文件中的内容

export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin:/home/shivams/go/bin
Run Code Online (Sandbox Code Playgroud)

go env在我的机器上运行给出了这个输出

GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/shivams/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT=""
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
Run Code Online (Sandbox Code Playgroud)

里面的目录结构/home/shivams/go{pkg,src,bin}. 在 src 目录中,它就像test/hello.go.

如果我在srcdir 中并运行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 变量。

我在这里错过了什么吗?这是我第一次尝试去但无法使其正常工作。

Gam*_*iac 7

正如@JimB 所说,install是为包设计的命令。只是给你一个明确的例子,这是我运行go env命令时得到的。

GOARCH="amd64"
GOBIN="/Users/quazinafiulislam/Code/go/ogolang/bin"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/quazinafiulislam/Code/go/ogolang"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.5.1/libexec"
GOTOOLDIR="/usr/local/Cellar/go/1.5.1/libexec/pkg/tool/darwin_amd64"
GO15VENDOREXPERIMENT=""
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"
Run Code Online (Sandbox Code Playgroud)

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

.
??? bin
??? pkg
?   ??? darwin_amd64
??? src
    ??? bitbucket.org
    ??? github.com
    ??? golang.org
    ??? words
    ??? wordtest
Run Code Online (Sandbox Code Playgroud)

如您所见,我有几个包。其中之一是wordtest。我可以go installwordswordtest包上使用 a 。所以,让我们运行go install words看看目录会发生什么。

.
??? bin
?   ??? words
??? pkg
?   ??? darwin_amd64
??? src
    ??? bitbucket.org
    ??? github.com
    ??? golang.org
    ??? words
    ??? wordtest
Run Code Online (Sandbox Code Playgroud)

现在,我们可以看到我们words为我们创建了一个二进制文件(在bin目录中),我们可以通过调用./bin/words.