假设 x86 64 和 linux 平台。
如果查看 ELF 标头,偏移量都是 64 位的。
所以用relocatoin R_X86_64_64很容易创建大于4G的目标文件。这意味着静态 .o 文件和可执行文件可以与 64 位一样大。
但是,对于像 gcc 这样的共享库,我们只有 R_X86_64_PLT32 重定位。这意味着创建大于 4GB 的共享库是不可能的,对吧?
因此,如果我想构建一个庞大的程序,其中一个 .o 文件足够大 (>4GB) ,唯一的选择是静态链接吗?
欢迎任何评论。
谢谢,利米