我正在尝试构建一个 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'
看到它,但是是否有什么东西意味着输出构建字符串?(而且,那是什么正确调用字符串?)
最佳答案
Go 编译器生成的 .a
文件使用 pack
工具进行管理。用于链接包的元数据位于存档的 __.PKGDEF
成员中。
您可以使用以下命令将此文件从存档中提取到 stdout
:
go tool pack p path/to/package.a __.PKGDEF
它以您想要的构建签名开始,因此您可以使用第一行或 grep 获取 ^go object
,就像处理 strings
的输出一样(这应该更可靠一些,以防文本在程序代码中显示为常量)。
关于go - 如何从 Go 库中获取对象构建信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18939966/