我正在尝试构建一个 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 回答
慕沐林林
TA贡献2016条经验 获得超9个赞
.a
Go 编译器生成的文件使用该pack
工具进行管理。用于链接包的元数据可__.PKGDEF
在存档成员中找到。
您可以将此文件从存档中提取到stdout
:
go tool pack p path/to/package.a __.PKGDEF
它以您所追求的构建签名开始,因此您可以采用第一行或 grep for^go object
与输出一样strings
(这应该更可靠一些,以防文本在程序中显示为常量代码)。
- 1 回答
- 0 关注
- 171 浏览
添加回答
举报
0/150
提交
取消