如何检查Go包/对象文件(.a
, .o
)的内容?
我找到的唯一方法是使用go tool objdump
显示完整反汇编。
但是如何显示文件结构,例如导入和导出的符号、代码、数据以及其他部分,其他元数据等?
如何检查Go包/对象文件(.a
, .o
)的内容?
我找到的唯一方法是使用go tool objdump
显示完整反汇编。
但是如何显示文件结构,例如导入和导出的符号、代码、数据以及其他部分,其他元数据等?
编译后的 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
也很有用。
.a
文件,但仍然可能有所帮助。 - VonC