如何编译程序使其能够在32位Linux上使用> 4GB内存?

Osi*_* Xu 4 c c++ linux fedora

整个代码用C,C++和Fortran编写.是否可以使用超过4GB的内存.现在它在达到3GB内存时总是崩溃.

如果可能,如何设置编译选项(或配置标志)?

我们可以使用gcc,g ++,...或intel编译器

我们的操作系统:Fedora 12 x32

cat /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority
bogomips : 5319.72
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
Run Code Online (Sandbox Code Playgroud)

Dir*_*tel 8

不幸的是,你达到了极限

R> 2^32
[1] 4294967296
Run Code Online (Sandbox Code Playgroud)

这是你的4 gb限制.因此,无论操作系统是什么,您都无法为单个应用程序编制索引.

这是我们许多人切换到64位版操作系统的原因之一.自20世纪90年代末以来,Linux就支持这一点 只需在64位切换到FC(或Ubuntu或...).

一种可能的替代方案是安装更多RAM(Linux将处理)并在应用程序的多个实例上对您的任务进行分段,从而有效地并行运行它.但那可能不值得麻烦......