首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相同C库版本的不同GNU ABI标记?

相同C库版本的不同GNU ABI标记?
EN

Stack Overflow用户
提问于 2017-11-13 16:46:25
回答 1查看 396关注 0票数 0

我的Linux机器上有两个ELF二进制文件。当我在它们上运行file时,我收到以下信息:

File#1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.2.0, not stripped

File#2: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.2.5, stripped

据我所知,for GNU/Linux 2.2.X部分源于二进制文件的.note.ABI-tag部分,并由链接器添加。2.2.X的结果值取决于链接到二进制文件的C库的版本,并描述了此C库版本支持的最低ABI版本-这意味着,在内核为>= 2.2.0的机器上支持文件#1,在内核为>= 2.2.5的机器上支持文件#2。(这是正确的吗,还是我已经错了?)

我认为ABI标记的差异可能源于两个二进制文件中包含的两个不同的C库版本。但是当我检查二进制文件的字符串时,它们都包含字符串glibc 2.3.2

这怎麽可能?对我来说这似乎是不合理的,对GNU C库的某种补丁并没有导致版本号的改变会改变所支持的ABI版本……

EN

回答 1

Stack Overflow用户

发布于 2017-11-13 17:14:53

glibc ABI应该独立于为其构建的内核版本,并且测试套件尝试验证新构建的glibc是否符合官方ABI。

可以在配置glibc时指定glibc发行版所需的最低内核版本,这也是.note.ABI-tag部分的最终内容。不需要对glibc源代码打补丁。我不能完全确定配置的最低内核版本最终以动态链接二进制文件的形式结束是否正确(因为应该可以在具有不同构建的glibc的旧内核上运行二进制文件)。

然而,对于静态链接的二进制文件,这肯定是正确的,因为配置更高的最低内核版本将使程序无法在较旧的内核上运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47260124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档