去安装不工作
go install not working
我在 debian 8.2 3.16.0-4-amd64
上使用 go version go1.5.1 linux/amd64
。我使用 https://golang.org/doc/install.
安装了 golang
这是我放在 ~/.profile
文件中的内容
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin:/home/shivams/go/bin
运行 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"
/home/shivams/go
中的目录结构是 {pkg,src,bin}
。在 src 目录中,它就像 test/hello.go
.
如果我在 src
目录和 运行 go run test/hello.go
中,它是 运行ning 完美。此外,如果我 运行 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 变量。
我在这里遗漏了什么吗?这是我第一次尝试 go 但无法正常工作。
正如@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"
您会看到 GOPATH
设置为我的项目根目录 ~/Code/go/ogolang
。现在,让我们看看我的项目根目录中有什么。
.
├── bin
├── pkg
│ └── darwin_amd64
└── src
├── bitbucket.org
├── github.com
├── golang.org
├── words
└── wordtest
如您所见,我有几个包裹。其中之一是 wordtest
。我可以在 words
或 wordtest
包上使用 go install
。所以,让 运行 go install words
看看目录会发生什么。
.
├── bin
│ └── words
├── pkg
│ └── darwin_amd64
└── src
├── bitbucket.org
├── github.com
├── golang.org
├── words
└── wordtest
现在,我们可以看到我们已经为我们创建了一个 words
二进制文件(在 bin
目录中),我们可以通过调用 ./bin/words
运行 它.
根据 Games Brainiac
go install work on packages 是正确的。但是让我添加一些关于在主目录中使用 go install 创建包的细节。
.
├── bin
│ └── app
├── pkg
│ └── linux_amd64
| └── user
| └── handlers.a
└── src
├── bitbucket.org
├── github.com
└── user
└── app
├── main.go
└── handlers
└──handlers.go
看看上面的目录结构,我在 handlers 文件夹中创建了一个包含源文件 handlers.go
的包。我想构建那个包,我会 运行 go build
在 handlers 文件夹中,它只显示我们的文件没有编译错误,returns 在这种情况下什么也没有。
要构建包含主文件的包,我们需要 运行 go install
进入 app 文件夹。这将在 $GOPATH/pkg
内创建 handlers.a 包对象,并在 $GOPATH/bin
内创建可执行文件,文件夹名称为 (app in this case)
,其中我们使用主包创建 main.go 文件。
我在 debian 8.2 3.16.0-4-amd64
上使用 go version go1.5.1 linux/amd64
。我使用 https://golang.org/doc/install.
golang
这是我放在 ~/.profile
文件中的内容
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin:/home/shivams/go/bin
运行 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"
/home/shivams/go
中的目录结构是 {pkg,src,bin}
。在 src 目录中,它就像 test/hello.go
.
如果我在 src
目录和 运行 go run test/hello.go
中,它是 运行ning 完美。此外,如果我 运行 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 变量。
我在这里遗漏了什么吗?这是我第一次尝试 go 但无法正常工作。
正如@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"
您会看到 GOPATH
设置为我的项目根目录 ~/Code/go/ogolang
。现在,让我们看看我的项目根目录中有什么。
.
├── bin
├── pkg
│ └── darwin_amd64
└── src
├── bitbucket.org
├── github.com
├── golang.org
├── words
└── wordtest
如您所见,我有几个包裹。其中之一是 wordtest
。我可以在 words
或 wordtest
包上使用 go install
。所以,让 运行 go install words
看看目录会发生什么。
.
├── bin
│ └── words
├── pkg
│ └── darwin_amd64
└── src
├── bitbucket.org
├── github.com
├── golang.org
├── words
└── wordtest
现在,我们可以看到我们已经为我们创建了一个 words
二进制文件(在 bin
目录中),我们可以通过调用 ./bin/words
运行 它.
根据 Games Brainiac
go install work on packages 是正确的。但是让我添加一些关于在主目录中使用 go install 创建包的细节。
.
├── bin
│ └── app
├── pkg
│ └── linux_amd64
| └── user
| └── handlers.a
└── src
├── bitbucket.org
├── github.com
└── user
└── app
├── main.go
└── handlers
└──handlers.go
看看上面的目录结构,我在 handlers 文件夹中创建了一个包含源文件 handlers.go
的包。我想构建那个包,我会 运行 go build
在 handlers 文件夹中,它只显示我们的文件没有编译错误,returns 在这种情况下什么也没有。
要构建包含主文件的包,我们需要 运行 go install
进入 app 文件夹。这将在 $GOPATH/pkg
内创建 handlers.a 包对象,并在 $GOPATH/bin
内创建可执行文件,文件夹名称为 (app in this case)
,其中我们使用主包创建 main.go 文件。