共享对象文件的最大大小是多少?

时间:2012-05-31 16:57:36

标签: c linux

我正在构建一个具有巨大.so文件的应用程序 - 大小超过2GB(剥离)。 共享对象文件的大小是否有限制? 因为strace显示文件被拒绝,因为它太大了。

我的系统目前是一个32位系统,我也想知道当我为64位Linux系统构建时,这会有多大变化。

2 个答案:

答案 0 :(得分:0)

这取决于系统的内存*。所以直接加载可执行文件或系统本身的链接如果内存不足或操作系统分配大量内存而无法加载,如果你为64位系统构建,它将扩展更多由于添加了一些64位标志和指令,因此大小超过2 GB。

答案 1 :(得分:0)

由于共享库完全加载到内存中,我强烈建议您将资源转移到某些外部文件。恕我直言,2GB对于共享库是完全不可接受的,并且会在低内存系统上引起问题。

更新:

请忽略我关于将整个共享库加载到内存中的第一句话。正如OP评论的那样,共享库确实是mmap,并且符号页面是按需加载的。