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

Iva*_*van 6 go

如何检查 Go 包/目标文件 ( .a, .o) 的内容

我发现的唯一一件事是使用go tool objdump.

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

Jay*_*rod 8

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

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

您可以使用golang.org/x/tools/go/gcexportdata将导出数据读取为可以理解的格式go/types

听起来你已经找到go tool objdump了反汇编。您可能还会发现go tool nm列出符号很有用。