为了账号安全,请及时绑定邮箱和手机立即绑定

避免在 golang 上调试信息

避免在 golang 上调试信息

Go
手掌心 2021-10-04 15:45:53
我认为 gc 默认包含调试信息。但是,我想避免反编译。用gc编译go代码时如何去掉调试信息?注意:使用 gccgo 并不能解决问题。如果我不使用 '-g' 编译,则可执行文件会被破坏并且只输出:ELF 可执行文件中没有调试信息 errno -1 致命错误:ELF 可执行文件中没有调试信息运行时堆栈:ELF 可执行文件中没有调试信息 errno -1 panic during panic"
查看完整描述

2 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

go 链接器有一个标志-w,用于禁用 DWARF 调试信息生成。您可以为 go 工具构建命令提供链接器标志,如下所示:

go build -ldflags '-w'

Linux/Unix 平台上的另一种方法是strip对编译后的二进制文件使用命令。这似乎产生比上述链接器选项更小的二进制文件。


查看完整回答
反对 回复 2021-10-04
?
九州编程

TA贡献1785条经验 获得超4个赞

我推荐使用-ldflags="-s -w"which 删除符号表和调试信息。

作为 Go 1.13 的奖励,-trimpath用于减少存储在文件中的文件路径的长度


查看完整回答
反对 回复 2021-10-04
  • 2 回答
  • 0 关注
  • 454 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信