【发布时间】:2013-09-01 14:48:40
【问题描述】:
我正在编译一些大量使用模板的代码(它基于 boost::msm 框架)。当使用 g++ 4.7.1 编译时,cc1plus 进程达到大约 2.4 Gb 的 RAM 大小并且失败并出现“虚拟内存耗尽:无法分配内存”错误。
我使用的是 32 位编译器(切换到 64 位不是 ATM 的选项),机器本身是 64 位 Ubuntu,具有 16Gb 的 RAM,编译是在 Debian 的 64 位 chroot 下执行的喘息的分布。在编译时有大量可用的 RAM,因此如果由于缺少可用的物理 RAM 而导致编译失败,则首先要达到 4Gb。我尝试使用“ulimit -m”选项,设置为不同的值并将其设置为较小的大小会导致编译器提前失败,但是当设置为“无限”时,它会在上述 2+ Gb 时失败。
所以我想肯定是有别的东西限制了我。也许有人遇到过类似的问题并且知道改变限制的方法?
【问题讨论】:
-
“切换到 64 位”,你的意思是使用 GCC 本身的 64 位构建还是使用 GCC 构建 64 位可执行文件?
-
我的意思是使用 64 位 g++
标签: c++ memory boost compiler-errors virtual-memory