Go install не создает файл bin

Моя структура папок верна, я могу оба запускать 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 нет.

Мой переход env следующий:

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 создавались вместе с файлами пакетов.

Ответ 1

Одной из причин может быть file.go не в package main file.go.
См. Например, " Ваша первая программа ",

Если бы это было так, это создало бы исполняемый файл в bin.

В статье " Как работает команда сборки? " Упоминается:

Команда Go - это пакет, имя которого является main.
Основные пакеты или команды компилируются точно так же, как и другие пакеты, но затем проходят несколько дополнительных шагов, которые должны быть связаны с окончательным исполняемым файлом.

Ответ 2

Я пришел к этому вопросу с другой проблемой, так что, надеюсь, это кому-нибудь поможет. Это не отвечает конкретно на этот вопрос, но он отвечает мне, по крайней мере, почему не создавался бинарный файл.

Допустим, ваша структура каталогов выглядит так:

.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, и я не знаю, как строить. Надеюсь, это поможет людям натолкнуться на этот вопрос с этой проблемой :)