2012-07-02 2 views
3

Angstrom Linux로 BeagleBoard에서 소스 코드를 컴파일하려고합니다. 어제 코드를 컴파일 할 수있었습니다.gcc cc1 : 할당 메모리가 부족합니다.

을 말한다입니다

#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; 
} 

나는 "무료"쓸 때 :하지만 오늘은 코드를 컴파일 할 수 없습니다 그것은 말한다 :

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

내 편집 문자열은 다음과 같습니다

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

코드입니다

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

어떻게 해결할 수 있습니까?

+0

어떤 버전의 gcc를 사용하고 있습니까? 최신 버전으로 업그레이드하십시오 (예 : 4.7 또는 4.6 이상). –

답변

7

당신은 이미 메모리 부족 상태입니다 (268439 > 221256).

  1. 이 같은 temporary swap file 만들기 : 지금 당신은 두 가지 옵션이 있습니다. 그것은 아래로 비등 :

    su - root 
    fallocate -l 1G tmpswap 
    mkswap tmpswap 
    swapon tmpswap 
    

    나는, 빠른 수정으로이 방법을 선택 할 수 없습니다 당신이 정말로 메모리의 적은 양의 스왑을 조금 가져야한다고 언급.

    이 변경 사항을 영구히 적용하려면이 기사를 읽으십시오. 여기에는 사용 권한 및 fstab에 관한 몇 가지 중요한 힌트가 포함되어 있습니다.

  2. 코드를 단순화하여 cc1에 메모리가 많이 필요하지 않도록하십시오. 어떻게 생각하는지 모르겠다.

+0

그것은 해결 그러나 여기에서 나는 새로운 오류보고 : 원하는 RW = 0, = 34,359,738,368, 장치의 끝을지나 mmcblk0p2에 액세스 할 수 = 15433728 시도를 제한하려면, RW = 0 : 장치 mmcblk0p2의 끝을지나 액세스 할 수 시도 = 34359738368, 제한 = 15433728 – user1336117

+0

소리가 좋지 않지만 모자가 어디에서 왔는지 알 수 없습니다. –

+0

하드웨어 문제 같은 냄새가 날 수도 있습니다 .... –