Go install不会创建任何bin文件

cas*_*tan 23 go

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

例如,我的工作区如下:

Go\
  bin\
  pkg\
  src\
    name\
      file.go
Run Code Online (Sandbox Code Playgroud)

那么,如果我跑

cd %GOPATH%\src\name
go install
Run Code Online (Sandbox Code Playgroud)

要么

go install name
Run Code Online (Sandbox Code Playgroud)

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

Go\
  bin\
  pkg\
    windows_amd64\ <-- new!
      name.a       <-- new!
  src\
    name\
      file.go
Run Code Online (Sandbox Code Playgroud)

正确创建包文件,但不创建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
Run Code Online (Sandbox Code Playgroud)

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

Von*_*onC 45

一个原因可能file.go是不在package main.
请参阅" 您的第一个程序 "

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

文章" go build命令如何工作? "确实提到:

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

  • @red888`go install`(https://golang.org/pkg/cmd/go/#hdr-Compile_and_install_packages_and_dependency)接受构建标志(https://golang.org/pkg/cmd/go/#hdr-Compile_packages_and_dependency),所以你至少可以传递“-v”来打印编译时的包名称,“-x”来打印命令,“-work”来打印临时工作目录的名称并且不删除它退出时,进行进一步检查。 (2认同)