我的文件夹结构正确,我可以从包文件夹内部和系统中的任何位置运行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文件与包文件一起创建。
答案 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”,可执行文件已生成