Go install不会创建任何bin文件

k5ifujac  于 2022-12-07  发布在  Go
关注(0)|答案(3)|浏览(320)

我的文件夹结构是正确的,我既可以从包文件夹内部运行go install,也可以从系统的任何地方运行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文件未正确创建。
我的go 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文件与包文件沿着创建。

33qvvth1

33qvvth11#

一个原因可能是file.go不在package main中。
参见“您的第一个程序”
如果是,则会在bin中生成一个可执行文件。
文章“How does the go build command work ?“确实提到:
Go命令是一个名为main的包。
主程序包或命令与其他程序包一样进行编译,但要链接到最终的可执行文件,需要执行几个附加步骤。

x759pob2

x759pob22#

我是带着一个不同的问题来回答这个问题的,所以希望这能帮助到一些人。这并没有具体回答这个问题,但它至少回答了我为什么没有制作二进制文件。
假设您的目录结构如下所示:

.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语言源代码,但我不知道如何构建它。希望这能帮助人们在遇到这个问题时遇到这个问题:)

rjee0c15

rjee0c153#

作为第一个程序,我使用了first line作为package hello
然后它在pkg文件夹下创建“hello.a”。

相关问题