猿问

如何从 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',但有东西是输出构建字符串?(而且,什么是正确称为该字符串?)


30秒到达战场
浏览 172回答 1
1回答

慕沐林林

.aGo 编译器生成的文件使用该pack工具进行管理。用于链接包的元数据可__.PKGDEF在存档成员中找到。您可以将此文件从存档中提取到stdout:go tool pack p path/to/package.a __.PKGDEF它以您所追求的构建签名开始,因此您可以采用第一行或 grep for^go object与输出一样strings(这应该更可靠一些,以防文本在程序中显示为常量代码)。
随时随地看视频慕课网APP

相关分类

Go
我要回答