- go中生成可执行文件
- 一、简介
- 二、使用
- 三、示例
- 3.1 带参数编译
- 3.1.1 目标go文件
- 3.2 多文件编译
- 3.3 go项目编译
- 四、其它
- 4.1 go install
- 4.2 go目录结构
这里介绍对go项目进行打包编译生成可执行文件,其实包含参数的传递、目标可执行文件类型、打包对象。
二、使用go项目的编译命令为go build,编译包,生成可执行文件(包含main包),默认生成位置在当前目录下。 (注意不能生成包文件)。如下:
go build 参数有: -ldflags:用于编译时设置变量值 -o:指定编译生成的目标文件名 -v:编译时显示包名 另外编译预设变量: GOOS:指定编译生成可执行文件的运行系统,常用的有:windows、linux、darwin GOARCH:指定编译生成可执行文件的运行系统架构,常用的有:amd64、arm
其中参数传递-ldflags的二级参数为:
-X:设置包中的变量值 -s:去掉符号表,异常时没有文件名或行号信息 -w:去掉DWARF调试信息三、示例 3.1 带参数编译 3.1.1 目标go文件
这里目标go文件param_main.go我放在with_param目录下。
package main
import "fmt"
//参数定义,由外部传值
var (
Env string
Version string
)
func main() {
fmt.Printf("Env:%s Version:%s n", Env, Version)
}
编译命令:
GOOS=darwin GOARCH=amd64 go build -o "with_param/param_main" -ldflags "-w -s -X main.Env=test -X main.Version=1.0" with_param/param_main.go
运行编译命令后,后成可执行文件param_main,执行文件后,输出:
Env:test Version:1.03.2 多文件编译
在multi目录下新建目标go文件hello.go和multi_main.go,如下:
package main
func DoHello(name string) {
println("hello " + name)
}
package main
func main() {
println("execute main")
DoHello("apple")
}
编译命令:
GOOS=darwin GOARCH=amd64 go build -o "multi/multi_main" multi/multi_main.go multi/hello.go
运行编译命令后,后成可执行文件multi_main,执行文件后,输出:
execute main hello apple3.3 go项目编译
go项目编译直接在项目根目录下编译即可(不需要单独指定编译目录),如:
GOOS=darwin GOARCH=amd64 go build -o "targte_exe" -ldflags "-w -s -X main.Env=test -X main.Version=1.0"四、其它 4.1 go install
除了使用go build编译外,还可以使用go install,直接生成库。
- 编译包文件(没有main包)后,编译的包放到pkg目录下($GOPATH/pkg)
- 生成可执行文件(有main包)后,可执行文件放到bin目录下($GOPATH/bin)
项目结构目录结构通常为:
根路径下: src:源文件 pkg:包文件 bin:可执行文件



