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

标签 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' 看到它,但是是否有什么东西意味着输出构建字符串?(而且,那是什么正确调用字符串?)

最佳答案

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/

相关文章:

GoLang : net. LookupHost 返回重复的 ip

testing - 测试 golang 的 Web 应用程序查询参数的最佳实践

node.js - 戈朗 : select few million rows from PostgreSQL database using readable streams like in node. js

arrays - 在 golang 中将矩阵打印为字符串

go - 在kubernetes中返回.Items的值

go - 限制来自 channel 的已处理消息的数量

angularjs - go gorilla/sessions angularjs and path, session values not saved (find the bug/place the blame)

go - 使用 go build(或 go install)的增量构建不起作用

在 go 程序中运行时 Bash 脚本挂起

javascript - Golang为深层嵌套结构赋值