如何从Go库中获取对象构建信息?

时间:2013-09-22 03:26:22

标签: go

我正在尝试构建一个Go程序,我的系统上有二进制形式的必需库。但是,go build失败并显示

object is [linux amd64 go1.1.1 X:none] expected [linux amd64 go1.1.2 X:none]

我看到了当前的问题:静态库是使用较旧版本的Go构建的。如何直接从.a文件中读取该信息? (我可以用strings library.a | grep '^go object'看到它,但是有什么意味着输出构建字符串吗?(并且,该字符串被正确调用了什么?)

1 个答案:

答案 0 :(得分:1)

Go编译器生成的.a文件使用pack工具进行管理。用于链接包的元数据位于存档的__.PKGDEF成员中。

您可以使用以下内容将此文件从存档中提取到stdout

go tool pack p path/to/package.a __.PKGDEF

它从您之后的构建签名开始,因此您可以使用^go object的第一行或grep来获取strings的输出(这应该更可靠一点,如果文本在程序代码中显示为常量。)