我的文件夹结构是正确的,我既可以从包文件夹内部运行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文件与包文件沿着创建。
3条答案
按热度按时间33qvvth11#
一个原因可能是
file.go
不在package main
中。参见“您的第一个程序”
如果是,则会在
bin
中生成一个可执行文件。文章“How does the go build command work ?“确实提到:
Go命令是一个名为
main
的包。主程序包或命令与其他程序包一样进行编译,但要链接到最终的可执行文件,需要执行几个附加步骤。
x759pob22#
我是带着一个不同的问题来回答这个问题的,所以希望这能帮助到一些人。这并没有具体回答这个问题,但它至少回答了我为什么没有制作二进制文件。
假设您的目录结构如下所示:
我必须运行以下两个命令:
在此之后,我的二进制文件出现在
myapp/
下。很明显,这和上面的答案有很大的不同,但我是在这样一个情况下提出这个问题的,我运行
go get
来获取一些Go语言源代码,但我不知道如何构建它。希望这能帮助人们在遇到这个问题时遇到这个问题:)rjee0c153#
作为第一个程序,我使用了first line作为package hello
然后它在pkg文件夹下创建“hello.a”。