编译时,如果编译的结果需要gdb调试则使用参数-gcflags “-N -l”,这样可以忽略Go内部做的一些优化,聚合变量和函数等优化. go build -gcflags "-N -l",但是一定要注意是不是小写的i,也不是大写的I,是小写的L,不然会出现奇怪的错误。



如果编译的结果需要发布.则使用-ldflags “-s”,可以去掉调试信息,减小大约一半的大小

go build -ldflags "-s"

删除调试符号:go build -ldflags “-s -w”

  • -s: 去掉符号信息。
  • -w: 去掉DWARF调试信息。

关闭内联优化:go build -gcflags “-N -l”