减少 Go 构建文件大小的简单策略

Jun 29 2019 Golang

由于 go 编译程序自带运行时,所以一个简单的 hello,world 程序也会超过 1M 的大小

1
2
3
4
5
6
7
package main

import "fmt"

func main() {
fmt.Println("Hello,world")
}

构建并查看编译后文件大小

1
2
3
$ go build -o 1.out main.go
$ du -h 1.out
2.0M 1.out

最近我发现一个技巧,通过加入 ldflags 指令就可以减少构建大小。

1
2
3
4
$ go build -o 2.out -ldflags '-w -s' main.go
$ du -h 2.out 1.out
1.6M 2.out
2.0M 1.out

减少了 400K 左右。

在 go link 文档中有 ldflags 的指令详细说明,这里就是说把 debug 信息全部移出了。

1
2
3
4
-s
Omit the symbol table and debug information.
-w
Omit the DWARF symbol table.