GolangNote

Golang笔记

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

Permalink

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

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

Bash: go build
1
go build -ldflags "-s -w"

参数的意思:

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

这是一个hello.go 程序:

Go:
1
2
3
4
5
6
7
package main

import "fmt"

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

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

Bash: go build
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 转摘请注明来源

Related articles

go交叉编译方法

假设开发环境是ubuntu 32 位,目标机是ubuntu 64 位,下面是交叉编译的示例...

Write a Comment to "让go 编译生成的文件体积小一些的方法"

Submit Comment Login
Based on Golang + fastHTTP + sdb | go1.17.1 Processed in 0ms