Go install不会创建任何bin文件

时间:2014-11-01 23:16:51

标签: go

我的文件夹结构正确,我可以从包文件夹内部和系统中的任何位置运行go install,在install之后添加包(文件夹)名称。

例如,我的工作区如下:

Go\
  bin\
  pkg\
  src\
    name\
      file.go

然后,如果我跑

cd %GOPATH%\src\name
go install

go install name

没有生成错误,我的工作区变为以下

Go\
  bin\
  pkg\
    windows_amd64\ <-- new!
      name.a       <-- new!
  src\
    name\
      file.go

正确创建了包文件,但bin文件不是

我的环境如下:

C:\Users\...>go env
set GOARCH=amd64
set GOBIN=C:\Users\myname\Documents\Go\bin
set GOCHAR=6
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\myname\Documents\Go
set GORACE=
set GOROOT=C:\Go
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set CC=gcc
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0
set CXX=g++
set CGO_ENABLED=1

为什么会这样?我错过了什么,做错了什么?我希望bin文件与包文件一起创建。

3 个答案:

答案 0 :(得分:39)

一个原因可能是file.go package main中没有{。}} 例如,参见&#34; Your first program&#34;

如果是,那将在bin生成可执行文件。

文章&#34; How does the go build command work ?&#34;确实提到:

  

Go命令是一个名为main的包   主包或命令的编译方式与其他包一样,但是需要经过几个额外的步骤才能链接到最终的可执行文件中。

答案 1 :(得分:4)

我遇到了一个不同的问题,因此希望对您有所帮助。这不是专门回答这个问题,但是至少确实为我回答了为什么没有二进制文件的问题。

假设您的目录结构如下:

.go/
  bin/
  pkg/
  src/
    github.com/
      banool/
        myapp/
          file.go
          server.go
          cmd/
            myapp/
              main.go

我必须运行以下两个命令:

go build github.com/banool/myapp/...
go build github.com/banool/myapp/cmd/...

此后,我的二进制文件出现在myapp/下。

显然,这是与上述答案截然不同的情况,但是我遇到了这种情况,我曾运行go get来获取一些Go源码,但我不知道如何构建它。希望这可以帮助人们解决这个问题:)

答案 2 :(得分:0)

嗯,作为第一个程序,我使用第一行作为 包裹你好

然后在pkg文件夹下创建“ hello.a”。 瞬间我将其更改为“ package main”,可执行文件已生成