内存不足分配字节

时间:2017-08-10 06:16:09

标签: c memory arm

我正在尝试使用Arch Linux在ARMv7主板上构建我的软件。 我还为我的软件构建了PGO版本。第一个构建编译没有错误,但第二个构建崩溃比我使用我的配置文件优化目录进行构建。 我在这里收到此错误消息

cc1: out of memory allocating 66574076 bytes after a total of 148316160 bytes

目前我有2GB内存。 我试图尽量设置我的交换文件(20G),而且我的ulimit也是无限制的

$ ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 14879
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 14879
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

但它仍然没有编译,我不知道我还可以做什么来编译我的程序。

2 个答案:

答案 0 :(得分:2)

在我的构建过程中,由于存在,

,这种情况多次发生在我身上
  • 内存已满
  • 磁盘已满

我在两种情况下都得到了相同的“无法分配内存”错误。只需检查top命令的内存使用情况,看看是否使用了所有RAM / Swap内存。

还使用df命令检查磁盘使用情况。例如df -kh以查看您的编译驱动器是否已满

说到内存,如果是32位系统,最大内存将被限制为2 ^ 32~4GB。见3GB barrier。增加交换大小无济于事。

如果它是64位系统,则内存限制很高,因此编译器/ limker尝试访问的任何文件/文件夹中的其他可能性可能是权限问题。

答案 1 :(得分:0)

我在Ubuntu中遇到了类似的问题,除了该问题是在用C++编译MAKEFILE程序时发生的。

根据我的搜索,我意识到问题可能出在使用32位系统或虚拟机。

我找到了解决此问题的简便方法,它是从上一次编译中删除现有的二进制文件

对我有用。