编译go项目

2022-11-25  本文已影响0人  wayyyy

go build 常见编译选项:

参数 说明
-o 可执行文件名
-a 强制重新编译所有包
-p 并行编译所使用的CPU核数量
-v 显示待编译包名字
-n 仅显示编译命令,但不执行
-x 显示正在执行的编译命令
-work 显示临时工作目录,完成后不删除
-race 启动数据竞争检查
-gcflags 编译器参数
-ldflags 链接器参数
禁止编译优化
go build -gcflags "all=-N -l"  -o main.exe main.go
-ldflags -s -w 去掉符号表和调试信息
go build -ldflags -s -w -o main.exe main.go
利用-ldflags -X设置字符串全局变量值

发版时,我们需要一个信息版本号,如果每次人工修改,容易遗忘。而go 在编译时允许注入一个变量进去。

package main

import (
    "fmt"
)

var MinVersion string

func main() {
    fmt.Println(fmt.Sprintf(publish: %s", MinVersion))
}

如下命令编译:

go build -ldflags "-X 'main.MinVersion=1.0.0.1'" -o main.exe main.go

执行输出:


image.png

我们可以将代码提交ID作为在Makefile 中写入进去,这样就不用每次修改版本号了。

通过 go bulid -tags 实现编译控制

TODO

上一篇下一篇

猜你喜欢

热点阅读