go 编译生成的文件很大,一个hello world 就1.5M,可以用下面命令,多加两个参数使其变小一些。
1
go build -ldflags "-s -w"
参数的意思:
-ldflags
: 表示将后面的参数传给连接器(5/6/8l)-s
:去掉符号信息-w
:去掉 DWARF 调试信息
这是一个hello.go 程序:
1
2
3
4
5
6
7
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界")
}
看看使用前后的大小对比:
1
2
3
4
5
6
$ 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 转摘请注明来源