linux - a.out被ELF文件格式取代?

标签 linux unix file-format elf coredump

我有几个问题:

  • 为什么 a.out 被替换为 ELF
  • 导致 ELF 文件格式兴起的 a.out 格式的主要缺陷是什么?
  • 早期的核心转储基于 a.out,但现在它们基于 ELF。 ELF 提供的各种优势是什么?

最佳答案

a.out 格式强制共享库在内存中占据固定位置。如果你想发布一个 a.out 共享库,你必须注册它的地址空间。这对性能有好处,但根本无法扩展。自己看how tricky it was (linuxjournal).

相比之下,在 ELF 中,共享库可以加载到内存中的任何位置,甚至对于在同一台计算机上运行的不同应用程序来说似乎位于不同的地址(代码仍然有效地仅加载到物理内存中的一个位置) !为了实现这一点,在 IA-32 架构中,必须牺牲一个寄存器 (%ebx)。 A more comprehensive reference表明共享库在 ELF 中变得更加复杂,但这是编译器端的复杂性,而不是程序员端的复杂性。

关于linux - a.out被ELF文件格式取代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2352378/

相关文章:

linux - 转义网址的 sed 正则表达式

linux - 尝试通过 SSH 保留进程失败

android - MP3 文件格式 详细信息

python - 使用 Python 打开并解析 QXDM .isf 文件

delphi - 在 Delphi 中读取/解析/修改 MS Word 文档,无需 Word Automation

c++ - RHEL6 上的自定义 GCC 4.8.2 使用 std::shared_ptr 给出构建错误

php - 从 PHP/Apache 运行 Perl 脚本

linux - 复杂的 rsync 过滤(包括和排除)

unix - UNIX:如何从2种输入中获取信息?

unix - 在不同进程之间传递文件描述符的可移植方式