英文:
How to inspect Go package files (.a files)?
问题
如何检查Go包/对象文件(.a
,.o
)的内容?
我找到的唯一方法是使用go tool objdump
显示完整的反汇编代码。
但是如何显示文件结构,例如导入和导出的符号、代码、数据和其他部分,以及其他元数据等?
英文:
How to inspect the content of Go package/object files (.a
, .o
)
The only thing I found is showing the full disassembly with go tool objdump
.
But how to show the file structure, like imported and exported symbols, code, data and other sections, other metadata etc.?
答案1
得分: 10
编译的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
对于列出符号很有用。
英文:
Compiled Go packages are stored in Unix ar archive files, so you can extract the files within them using ar
or go tool pack x pkg.a
.
Package files contain compiled code (_go_.o
), used by the linker to build binaries, and export data (__.PKGDEF
), used by the compiler when building dependent packages. If the package contained assembly files or cgo code, there may be additional .o
files, too.
You can use golang.org/x/tools/go/gcexportdata
to read export data into a format that can be understood by go/types
.
It sounds like you've already found go tool objdump
for disassembly. You might also find go tool nm
useful for listing symbols.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论