gcc cc1:内存不足分配

时间:2022-08-05 02:20:24

I am trying to compile a source code in my BeagleBoard with Angstrom Linux. Yesterday I was able to compile my code. But today I can not compile the code and it says:

我正在尝试使用Angstrom Linux在我的BeagleBoard中编译源代码。昨天我能够编译我的代码。但今天我无法编译代码,它说:

ccl: out of memory allocating 268439608 bytes after a total of 405504 bytes
make *** [getimagefromcam1.o] Error 1

My compilation string is:

我的编译字符串是:

gcc getimagefromcam1.c `pkg-config --cflags --libs opencv` -o getimagefromcam1 -lpthread

Code is:

#include <cv.h>
#include <highgui.h>
#include <cxcore.h>
#include <stdio.h>

int main(int argc, char* argv[])
{    
  CvCapture* camera = cvCreateCameraCapture(0); // Use the default camera

  IplImage*     frame = 0;
  IplImage      img;

  cvSetCaptureProperty(camera,CV_CAP_PROP_FRAME_WIDTH,2016) ;
  cvSetCaptureProperty(camera,CV_CAP_PROP_FRAME_HEIGHT,1512); 

  frame = cvQueryFrame(camera); //need to capture at least one extra frame
  frame = cvQueryFrame(camera);

  if (frame != NULL) {
    printf("got frame 1\n\r");
        cvSaveImage("webcam1.jpg", frame,0);
  } else {
      printf("Null frame 1\n\r");
  }

    frame = cvQueryFrame(camera); //need to capture at least one extra frame
  frame = cvQueryFrame(camera);

  if (frame != NULL) {
    printf("got frame 1\n\r");
        cvSaveImage("webcam1.jpg", frame,0);
  } else {
      printf("Null frame 1\n\r");
  }
  cvReleaseCapture(&camera);
  return 0;
}

when I write "free" is says

当我写“免费”时说

 total       used       free     shared    buffers     cached
Mem:        241260     221256      20004          0      13748     116184
-/+ buffers/cache:      91324     149936
Swap:            0          0          0

How can I solve it?

我该如何解决?

1 个解决方案

#1


8  

You're obviusly out of memory there (268439 > 221256). Now you have two options:

你在那里显然是内存不足(268439> 221256)。现在您有两种选择:

  1. Create a temporary swap file like this. It boils down to:

    像这样创建一个临时交换文件。归结为:

    su - root
    # for one GB of swap
    dd if=/dev/zero of=tmpswap bs=1024 count=1M
    mkswap tmpswap
    swapon tmpswap
    

    I would opt for this way as a quick fix, not to mention that you really should have a bit of swap with that small amount of memory.

    我会选择这种方式作为快速修复,更不用说你真的应该与少量的内存交换。

    Read the article if you want to make this change permanent, it contains some valuable hints regarding permissions and fstab.

    如果您想要使此更改成为永久更改,请阅读该文章,它包含有关权限和fstab的一些有价值的提示。

  2. Try to simplify your code so that cc1 does not need so much memory. No idea how to do that though.

    尝试简化代码,以便cc1不需要那么多内存。不知道怎么做。

#1


8  

You're obviusly out of memory there (268439 > 221256). Now you have two options:

你在那里显然是内存不足(268439> 221256)。现在您有两种选择:

  1. Create a temporary swap file like this. It boils down to:

    像这样创建一个临时交换文件。归结为:

    su - root
    # for one GB of swap
    dd if=/dev/zero of=tmpswap bs=1024 count=1M
    mkswap tmpswap
    swapon tmpswap
    

    I would opt for this way as a quick fix, not to mention that you really should have a bit of swap with that small amount of memory.

    我会选择这种方式作为快速修复,更不用说你真的应该与少量的内存交换。

    Read the article if you want to make this change permanent, it contains some valuable hints regarding permissions and fstab.

    如果您想要使此更改成为永久更改,请阅读该文章,它包含有关权限和fstab的一些有价值的提示。

  2. Try to simplify your code so that cc1 does not need so much memory. No idea how to do that though.

    尝试简化代码,以便cc1不需要那么多内存。不知道怎么做。