Linux 的官方 ELF 格式参考是什么?
有的是精灵1.2规范,该规范是 1995 年的并且已经过时(不包括DT_RUNPATH
示例)。
但除此之外,似乎只有一个草稿版本System V 应用程序二进制接口从 2003 年开始。我似乎找不到不是草稿的版本。
然后,有一个Oracle Solaris 版本,这似乎是基于该草案。
值得注意的是,2003 年草案和 Solaris 版本似乎DT_RPATH
在共享库是否被忽略的问题上存在分歧;比较表格2003年选秀和索拉里斯。根据 2003 年草案,它们应该被忽略,而根据 Solaris,它们不应该被忽略。
在我的 Ubuntu 16 机器上,运行时链接器似乎确实如此不是忽略DT_RPATH
共享库,因此看起来它遵循 Solaris 规范,而不是 2003 年草案。
Linux 的官方 ELF 规范应该是什么?
编辑:从 LSB 5.0.0 开始:
符合 LSB 的实现应支持对象文件信息和系统操作,这些信息和系统操作创建系统 V ABI 和系统 V ABI 更新中指定的运行程序,以及本规范和 LSB 核心规范的相关体系结构特定部分的进一步要求。
我没有看到 LSB 文档提到如何处理共享库上的 DT_RPATH。这是否意味着ld
不符合 LSB,因为它应该忽略共享库上的 RPATH?