假设您使用的是x86 64和linux平台。
如果您查看ELF头文件,偏移量都是64位的。
因此,通过relocation R_X86_64_64可以轻松创建一个大于4G的目标文件。这意味着静态.o文件和可执行文件可以达到64位所能表示的大小。
然而,对于像gcc这样的共享库,我们只有R_X86_64_PLT32 relocation。这意味着无法创建大于4GB的共享库,对吗?
所以,如果我想构建一个非常大的程序,其中一个.o文件足够巨大(>4GB),唯一的选择就是静态链接?
欢迎任何评论。
谢谢, limi
如果您查看ELF头文件,偏移量都是64位的。
因此,通过relocation R_X86_64_64可以轻松创建一个大于4G的目标文件。这意味着静态.o文件和可执行文件可以达到64位所能表示的大小。
然而,对于像gcc这样的共享库,我们只有R_X86_64_PLT32 relocation。这意味着无法创建大于4GB的共享库,对吗?
所以,如果我想构建一个非常大的程序,其中一个.o文件足够巨大(>4GB),唯一的选择就是静态链接?
欢迎任何评论。
谢谢, limi