使用cmd /进行构建的奇怪行为>

问题描述 投票:0回答:1

Go build命令不会创建相同的二进制文件,而cmd /是错误的:首先确定(〜/ go /前为空):

$ find .
.  
./cmd  
./cmd/api  
./cmd/api/main.go  

我建立:

$ cd cmd/api; go build -v main.go   
 get "gopkg.in/yaml.v2": found meta tag get.metaImport{Prefix:"gopkg.in/yaml.v2", VCS:"git", RepoRoot:"https://gopkg.in/yaml.v2"} at //gopkg.in/yaml.v2?go-get=1   
 get "golang.org/x/sys": found meta tag get.metaImport{Prefix:"golang.org/x/sys", VCS:"git", RepoRoot:"https://go.googlesource.com/sys"} at //golang.org/x/sys?go-get=1  
 get "gopkg.in/check.v1": found meta tag get.metaImport{Prefix:"gopkg.in/check.v1", VCS:"git", RepoRoot:"https://gopkg.in/check.v1"} at //gopkg.in/check.v1?go-get=1  
 get "golang.org/x/text": found meta tag get.metaImport{Prefix:"golang.org/x/text", VCS:"git", RepoRoot:"https://go.googlesource.com/text"} at //golang.org/x/text?go-get=1  
 get "golang.org/x/tools": found meta tag get.metaImport{Prefix:"golang.org/x/tools", VCS:"git", RepoRoot:"https://go.googlesource.com/tools"} at //golang.org/x/tools?go-get=1   
 go: downloading github.com/gin-gonic/gin v1.6.3   
 etc ....    
 go: finding golang.org/x/sys v0.0.0-20200116001909-b77594299b42  

结果:

$ ls -l  
    total 14940   
    -rwxr-xr-x 1 fr25155 nobody 15290667 May 12 14:00 main   
    -rw-r--r-- 1 fr25155 nobody      619 May 12 13:41 main.go   

现在使用cmd /::>

$ find .
.  
./cmd   
./cmd/api  
./cmd/api/main.go  

我使用mod命令:

$ go mod init api  
go: creating new go.mod: module api   
$ go mod vendor   
go: finding github.com/gin-gonic/gin v1.6.3   
go: downloading github.com/gin-gonic/gin v1.6.3   
etc ....   
go: extracting github.com/go-playground/locales v0.13.0   

创建了供应商::>

 ls -l   
 total 16   
  drwxr-xr-x 3 fr25155 nobody 4096 May 12 13:42 cmd   
  -rw-r--r-- 1 fr25155 nobody   61 May 12 14:07 go.mod  
  -rw-r--r-- 1 fr25155 nobody 3872 May 12 14:07 go.sum   
  drwxr-xr-x 5 fr25155 nobody 4096 May 12 14:07 vendor   
$ mkdir target  
 go build  -o target/api cmd/api   
$ ls -l target/
total 5912   
-rwxr-xr-x 1 fr25155 nobody 6052601 May 12 14:08 api

Go build命令不会创建相同的二进制文件,cmd /是错误的:首先确定(〜/ go /为空,之前):$ find。 。 ./cmd ./cmd/api ./cmd/api/main.go我建立了:$ cd cmd / api;去建立-v ...

从Go文档:

[编译单个主软件包时,build将生成的可执行文件写入以第一个源文件('go build ed.go rx.go'写入'ed'或'ed.exe')或源代码命名的输出文件中目录(“ go build unix / sam”写为“ sam”或“ sam.exe”)。编写Windows可执行文件时,将添加'.exe'后缀。

go
1个回答
0
投票

从Go文档:

© www.soinside.com 2019 - 2024. All rights reserved.