【问题标题】:what's the ELF object file size limitation on 64bit platform?64 位平台上的 ELF 对象文件大小限制是多少?
【发布时间】:2010-10-21 13:59:51
【问题描述】:

假设 x86 64 和 linux 平台。

如果查看 ELF 标头,偏移量都是 64 位。

因此,使用 relocatoin R_X86_64_64 创建大于 4G 的目标文件很容易。这意味着静态 .o 文件和可执行文件的大小可以达到 64 位。

但是,对于像 gcc 这样的共享库,我们只有 R_X86_64_PLT32 重定位。这意味着不可能创建大于 4GB 的共享库,对吧?

所以如果我想构建一个巨大的程序,一个.o文件足够大(> 4GB),唯一的选择是静态链接?

欢迎评论。

谢谢, 限制

【问题讨论】:

    标签: gcc compiler-construction 64-bit elf relocation


    【解决方案1】:

    x86-64 ABI used by Linux 专门定义了一个“大型模型”来避免此类大小限制,其中包括 GOT 和 PLT 的 64 位重定位类型。 (参见 4.4.2 节中的表格,以及 3.5.5 节中的指令序列,它们显示了它们是如何使用的。)

    【讨论】:

    • 非常感谢。我阅读了 ABI 并注意到 gcc 从 4.3 开始支持它。我现在正在尝试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 2010-12-30
    • 2011-05-20
    • 1970-01-01
    • 2019-08-21
    相关资源
    最近更新 更多