展开讨论

经验与复盘经验摘录 · 机器翻译

glibc 实际上为了与旧二进制文件兼容做了很多努力,不像大多数其他 Linux 用户空间部分一样。

… glibc 实际上为了与旧二进制文件兼容做了很多努力,不像大多数其他 Linux 用户空间部分一样。我为我的副业项目在 2015 年构建的二进制文件(BlastEm 0.3.0)在现代 Linux 上仍然可以正常运行,它们动态链接到 glibc。这只是个爱好项目,不是专业软件,而且在 JangaFX 公司甚至存在之前构建的版本也能正常运行。我发现当人们谈论 Linux 二进制兼容性时,却完全抱怨 glibc 而不是 manylinux 项目所遇到的问题,这非常奇怪。glibc 是用户空间中你可以依赖的少数部分之一。是的,在现代发行版上设置工具链以旧版 glibc 为基准进行构建有点麻烦。当然,如果你做了足够奇怪的事情,你可能会发现自己超出 glibc 认为属于其稳定 ABI 的范围。但从我的角度来看,它运行得相当不错。

源讨论Linux上二进制兼容性的现状及解决方法原帖 143 条评论 · 导入时统计
3

社区评论 0

还没有社区评论,来聊聊你的看法。

原讨论中的回复 3

仅展示本次导入中包含的直接回复。中文为机器翻译,可查看英文原文。

CH

>然后完全抱怨glibc 你可以将所使用的所有库随你的可执行文件一起发布。但无法做到这一点的是glibc。它是例外情况,因此被谈论得最多。

完整原文
FO

> 然后完全抱怨glibc 这是因为当你试图发布一个产品时,glibc是主要的痛苦来源之一。

完整原文
FL

我认为问题的要点是,在现代Linux发行版上构建一个链接到旧glibc版本号的可执行文件并不容易(?)。如果它很容易,那么需要更好地传达这一点。 使用Zig工具链构建时实际上非常容易,因为你可以简单地将所需的glibc版本附加到目标三元组(例如 `-target aarch64-linux-gnu.2.xx`),但我觉得这在普通的clang或gcc中不起作用(这让人不禁想知道为什么Zig能做到这一点)。

完整原文
在 Hacker News 阅读

尊重不同观点,分享具体经验。

登录后即可发帖、评论、转发和引用。