go build指定文件:go build main.go,构建指定文件,生成可执行文件,文件名为main。 go build指定目录:go build ./,构建指定目录下的main包,生成可执行文件,文件名为当前目录名。 go build缩小可执行文件的体积。go build -ldflags "-s -w",去掉符号表和调试信息,缩小可执行文件的体积。-s去掉符号表,在程序pa...
flag. Using a -buildmode option that requires non-default compile flags has a similar effect. -ldflags 'flag list' '-s -w': 压缩编译后的体积 -s: 去掉符号表 -w: 去掉调试信息,不能gdb调试了 -linkshared 链接到以前使用创建的共享库 -buildmode=shared. -pkgdir dir 从指定位置,而不是通常的...
flag. Using a -buildmode option that requires non-default compile flags has a similar effect. -ldflags 'flag list' '-s -w': 压缩编译后的体积 -s: 去掉符号表 -w: 去掉调试信息,不能gdb调试了 -linkshared 链接到以前使用创建的共享库 -buildmode=shared. -pkgdir dir 从指定位置,而不是通常的...
usage: go build [-o output] [build flags] [packages] packages是相对于GOROOT/src和GOPATH/src的相对路径。 -ldflag: -w 去掉调试信息 -s 去掉符号表 -X 注入变量,编译时赋值 常用变量 Module=github.com/pubgo/xxx GOPATH=$(shellgo env GOPATH)Version=$(shellgit tag --sort=committerdate | tai...
-s: 去掉符号表 -w: 去掉调试信息,不能gdb调试了 -linkshared 链接到以前使用创建的共享库 -buildmode=shared. -pkgdir dir 从指定位置,而不是通常的位置安装和加载所有软件包。例如,当使用非标准配置构建时,使用-pkgdir将生成的包保留在单独的位置。
其中-w为去掉调试信息(无法使用gdb调试),-s为去掉符号表(暂未清楚具体作用)。 gobuild -ldflags"-w -s"./hello.go 运行观察打印,看见文件名、行号等信息依然保留。 ./hello 打印输出如下。而且将该可执行文件置于任何目录下执行,都显示相同的输出。
go build -ldflags "-s -w" 相关解释: -s去掉符号表,panic时候的stack trace就没有任何文件名/行号信息了,这个等价于普通C/C++程序被strip的效果, -w去掉DWARF调试信息,得到的程序就不能用gdb调试了。 -s和-w也可以分开使用. 原文:http:///insion/blog/179/...
go build -ldflags "-s -w" 体积减小到了 23M。 22778576 文件大小降幅大约四分之一。 编译参数 -s 的作用是去掉符号信息。去掉符号表,golang panic 时 stack trace 就看不到文件名及出错行号信息了。 -w 的作用是去掉 DWARF tables 调试信息。结果就是得到的程序就不能用 gdb 调试了。
小问题总结 1.build后的文件太大(5M)启用这种编译后(3M),更多加壳压缩太麻烦 没有弄了解决采用:go build -ldflags “-s -w” 这种方式编译。解释一下参数的意思:-ldflags: 表示将后面的参数传给连接器(5/6/8l) -s:去掉符号信息 -w:去掉DWARF调试信息 注意:...
我们可以通过-s去掉符号表信息 go build -gcflags "-N -l" -ldflags="-s -X main.AppVersion=v1.0.0 -X main.AppName=k8s" main.go gdb就看不到其他信息了 image.png 二进制文件大小 去掉符号表,会使debug变得更加困难,但可以有效降低文件大小。MAC上两个文件的差异是 ...