golang build 的一些参数

  1. ldflags
  2. 编译的时候注入版本信息

ldflags

  • -w 为去掉调试信息(无法使用gdb调试)

  • -s 为去掉符号表(暂未清楚具体作用)

    1
    go build -ldflags "-w -s" ./hello.go

编译的时候注入版本信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package main

import (
"fmt"
"os"
"runtime"
)

var buildstamp = ""
var githash = ""

func main() {
args := os.Args
if len(args) == 2 && (args[1] == "--version" || args[1] == "-v") {
fmt.Printf("Git Commit Hash: %s\n", githash)
fmt.Printf("UTC Build Time : %s\n", buildstamp)
return
}
}
  • 然后编译的时候,通过链接选项 -X 来动态传入版本信息:
    1
    2
    flags="-X main.buildstamp=`date -u '+%Y-%m-%d_%I:%M:%S%p'` -X main.githash=`git describe --long --dirty --abbrev=14`"
    go build -ldflags "$flags" -x -o build-version main.go

欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 qinhan_shu@163.com

文章标题:golang build 的一些参数

本文作者:QinHan

发布时间:2019-12-25, 15:41:58

最后更新:2020-02-20, 05:42:12

原始链接:https://qinhan.site/2019/12/25/go-build/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏