compile
# go 编译
# mac 编译
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o ludo-server main.go
# linux 编译
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ludo-server main.go
1
2
3
4
2
3
4
# Golang 编译时改变参数,比如传递版本号等信息
package main
import (
"fmt"
"os"
)
var (
gitHash string
gitTag string
buildTime string
goVersion string
)
func main() {
args := os.Args
if len(args) == 2 && (args[1] == "--version" || args[1] == "-v") {
fmt.Printf("Git Comit Hash:%s\n", gitHash)
fmt.Printf("Git Tag :%s\n", gitTag)
fmt.Printf("编译时间: %s \n", buildTime)
fmt.Printf("编译器 Go 版本: %s \n", goVersion)
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
编译参数如下
TAG=v1.88.88
go build -ldflags "-X 'main.goVersion=$(go version)' -X 'main.gitTag=${TAG}' -X 'main.gitHash=$(git show -s --format=%H)' -X 'main.buildTime=$(git show -s --format=%ci)'" -o main main.go
1
2
2
编译输出结果如下:
% TAG=v1.88.88
% go build -ldflags "-X 'main.goVersion=$(go version)' -X 'main.gitTag=${TAG}' -X 'main.gitHash=$(git show -s --format=%H)' -X 'main.buildTime=$(git show -s --format=%ci)'" -o main main.go
% ./main
% ./main -v
Git Comit Hash:65ca716c4bb1b23ea96128b74e0360258dc6b4e2
Git Tag :v1.88.88
编译时间: 2021-04-18 22:15:53 +0800
编译器 Go 版本: go version go1.15.2 darwin/amd64
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# go build 附加参数
| 附加参数 | 备 注 |
|---|---|
| -v | 编译时显示包名 |
| -p n | 开启并发编译,默认情况下该值为 CPU 逻辑核数 |
| -a | 强制重新构建 |
| -n | 打印编译时会用到的所有命令,但不真正执行 |
| -x | 打印编译时会用到的所有命令 |
| -race | 开启竞态检测 |
编辑 (opens new window)
上次更新: 2023/02/24, 10:34:03