Golang笔记

让go 编译生成的文件体积小一些的方法

go 编译生成的文件很大,一个hello world 就1.5M,可以用下面命令,多加两个参数使其变小一些。

go build -ldflags "-s -w"

参数的意思:

  • -ldflags: 表示将后面的参数传给连接器(5/6/8l)
  • -s:去掉符号信息
  • -w:去掉DWARF调试信息

这是一个hello.go 程序:

package main

import "fmt"

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

看看使用前后的大小对比:

$ go build
$ ls -l
-rwxr-xr-x 1 root root 1570112  9月 14 22:28 hello
$ go build -ldflags "-s -w"
$ ls -l
-rwxr-xr-x 1 root root 1093504  9月 14 22:29 hello

变小了好多,但是要注意:

  • -s 去掉符号表(这样panic时,stack trace就没有任何文件名/行号信息了,这等价于普通C/C+=程序被strip的效果)
  • -w 去掉DWARF调试信息,得到的程序就不能用gdb调试了

两个可以分开使用,实际项目中不建议做这些处理,多费点空间也没关系。

本文网址: https://golangnote.com/topic/66.html (转载注明出处)
关于GolangNote:记录在工作中使用golang 遇到、面临的相关问题及解决方法。如果你在这里获得一些知识或信息,解决你的编程问题,请考虑捐赠给不幸的人或者你喜欢的慈善机构,除捐赠外,种植树木、志愿服务或减少排碳的行为也很有益处。如果你有任何问题可以在下面 留言
Be the first to comment!
Captcha image
Relative Articles