为了账号安全,请及时绑定邮箱和手机立即绑定

去安装不工作

去安装不工作

Go
偶然的你 2021-11-08 19:32:51
我使用go version go1.5.1 linux/amd64的debian 8.2 3.16.0-4-amd64。我golang使用https://golang.org/doc/install安装。这是我放在我的~/.profile文件中的内容export GOPATH=$HOME/goexport PATH=$PATH:/usr/local/go/bin:/home/shivams/go/bingo 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.如果我在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 变量。我在这里错过了什么吗?这是我第一次尝试去但无法使其正常工作。
查看完整描述

2 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

正如@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。我可以go install在words或wordtest包上使用 a 。所以,让我们运行go install words看看目录会发生什么。


.

├── bin

│   └── words

├── pkg

│   └── darwin_amd64

└── src

    ├── bitbucket.org

    ├── github.com

    ├── golang.org

    ├── words

    └── wordtest

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


查看完整回答
反对 回复 2021-11-08
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

根据Games Brainiacgo install 对软件包的工作是正确的。但是让我添加一些关于在主目录中使用 go install 创建包的细节。


  .

  ├── bin

  │   └── app

  ├── pkg

  │   └── linux_amd64

  |         └── user

  |              └── handlers.a

  └── src

    ├── bitbucket.org

    ├── github.com

         └── user

              └── app

                   ├── main.go

                   └── handlers

                         └──handlers.go

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


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


查看完整回答
反对 回复 2021-11-08
  • 2 回答
  • 0 关注
  • 184 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信