Go语言 生成可执行文件


go install 与 go build 区别
go install 能生成包
go build 不能生成包
Windows 系统
GOPATH = D:\go
D:\go\src\

helloworld目录
helloworld.go文件
package main
import "fmt"
func main() {//带有主函数
  fmt.Println("Hello, World!")
}

sayhello目录
sayhello.go 文件
package sayhello
import "fmt"
//不带有主函数
func Println() {
    fmt.Println("I am sayhello!")
}

helloworld2目录
helloworld2.go 文件
带有主函数
package main
import "fmt"
import "sayhello"
func main() {//带有主函数
  fmt.Println("Hello, world2!")
  sayhello.Println()
}

在命令行输入
cd helloworld
go install
发现
D:\go\bin 存在
不存在 go install 会创建这个文件
D:\go\bin生成helloworld.exe 输出helloworld

在命令行输入
cd sayhello
go install
发现
D:\go\pkg\sayhello 存在 如果之前不存在 go install 会创建这个文件
D:\go\pkg\sayhello  生成的 sayhello.a  是包文件 不能运行
在命令行输入
cd  helloworld2
go install
发现
D:\go\bin 存在 如果之前不存在 go install 会创建这个文件
D:\go\bin  新生成的 helloworld2.exe  输出helloworld2

在命令行输入
cd  helloworld
go build
发现
D:\go\bin 没有被 go build 修改过 go build 与 D:\go\bin 的变化没关系
helloworld 里边有新生成的 helloworld.exe 文件 其大小与 install出来的一样  输出helloworld

在命令行输入
cd  sayhello
go build
发现
D:\go\pkg\sayhello  没有被 go build 修改过 go build 与 D:\go\pkg\sayhello  变化没关系
sayhello 里边也没有新生成的 sayhello.a 文件
好像 go build 什么也没做
在命令行输入
cd  helloworld2
go build
发现
D:\go\bin并没有被 go build 修改过 go build 与 D:\go\bin 的变化没关系
helloworld2 里边有新生成的 helloworld2.exe 文件 其大小与 install出来的一样  输出helloworld2

go install 与 go build 区别


含主函数的go文件
go build 和 go install 都能成功编译
生成可执行文件
就是生成的可执行文件的地方不一样

不含主函数的go的包文件
只有 go install 能在pkg中生成包文件
而 go build 能对go的包文件起作用
最终文件夹和执行 go build 之前一样
go build 什么也没做

Go语言 生成可执行文件