如何检查 Go 包文件(.a 文件)?

9

如何检查Go包/对象文件(.a, .o)的内容?

我找到的唯一方法是使用go tool objdump显示完整反汇编。

但是如何显示文件结构,例如导入和导出的符号、代码、数据以及其他部分,其他元数据等?


请参阅"Easy to read Golang assembly output?",该链接并非针对.a文件,但仍然可能有所帮助。 - VonC
1个回答

10

编译后的 Go 包存储在 Unix ar 归档文件 中,因此您可以使用 argo tool pack x pkg.a 提取其中的文件。

包文件包含已编译的代码(_go_.o),由链接器用于构建二进制文件,以及导出的数据(__.PKGDEF),在构建依赖包时编译器使用。如果包含汇编文件或 cgo 代码,则还可能有其他 .o 文件。

您可以使用 golang.org/x/tools/go/gcexportdata 将导出的数据读入格式中,该格式可以被 go/types 理解。

听起来您已经找到了用于反汇编的 go tool objdump。您还可以发现对于列出符号,go tool nm 也很有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接