如何在运行时提取和比较具有以下限制的 libc 版本?
- 稳定的解决方案(命令输出解析被丢弃,因为这可能会有所不同)
- 不应依赖执行外部工具,如 ldd、gcc 或其他
- 必须在静态链接的二进制文件 (AppRun) 上工作
- 将在 C 中实现
语境:
在 AppImage 项目中,一直在开发一项功能,以允许创建向后兼容的包。为此,我们创建了一个名为 AppRun 的程序。Things 程序将系统 glibc 版本与捆绑包中的版本进行比较,并将捆绑包配置为在运行时使用较新的版本。该程序是静态链接的,不应依赖外部工具。
现在我们扫描libc.so
文件以查找GLIBC_X.XX
并存储更大的。但这不再适用于 Ubuntu 20.04 中的最新二进制文件。二进制文件是 2.31,但文件中没有GLIBC_2.31
字符串,因此该方法失败。
相关问题: