Closed islishude closed 5 years ago
由于 go 编译程序自带运行时,所以一个简单的 hello,world 程序也会超过 1M 的大小
package main import "fmt" func main() { fmt.Println("Hello,world") }
构建并查看编译后文件大小
$ go build -o 1.out main.go $ du -h 1.out 2.0M 1.out
最近我发现一个技巧,通过加入 ldflags 指令就可以减少构建大小。
$ 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 信息全部移出了。
-s Omit the symbol table and debug information. -w Omit the DWARF symbol table.
move to https://islishude.github.io/blog/2019/06/29/golang/%E5%87%8F%E5%B0%91-Go-%E6%9E%84%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%A7%E5%B0%8F%E7%9A%84%E7%AE%80%E5%8D%95%E7%AD%96%E7%95%A5/
由于 go 编译程序自带运行时,所以一个简单的 hello,world 程序也会超过 1M 的大小
构建并查看编译后文件大小
最近我发现一个技巧,通过加入 ldflags 指令就可以减少构建大小。
减少了 400K 左右。
在 go link 文档中有 ldflags 的指令详细说明,这里就是说把 debug 信息全部移出了。