gcc cc1: недостаточно памяти
Я пытаюсь скомпилировать исходный код в моей BeagleBoard с Angstrom Linux. Вчера я смог скомпилировать свой код. Но сегодня я не могу скомпилировать код и он говорит:
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
Код является:
#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;
}
когда я пишу "бесплатно", это говорит
total used free shared buffers cached
Mem: 241260 221256 20004 0 13748 116184
-/+ buffers/cache: 91324 149936
Swap: 0 0 0
Как я могу решить это?
2 ответа
Тебе явно не хватает памяти (268439 > 221256
). Теперь у вас есть два варианта:
Создайте временный файл подкачки, как это. Это сводится к:
su - root # for one GB of swap dd if=/dev/zero of=tmpswap bs=1024 count=1M mkswap tmpswap swapon tmpswap
Я бы выбрал этот способ как быстрое решение, не говоря уже о том, что вам действительно нужно немного поменяться с этим небольшим объемом памяти.
Прочтите статью, если вы хотите сделать это изменение постоянным, она содержит несколько полезных советов, касающихся разрешений и fstab.
Попробуйте упростить ваш код так, чтобы
cc1
не нужно так много памяти. Не знаю, как это сделать, хотя.
Если вы используете Clion для сборки своей программы, просто отметьте Build>>Clean и пересоберите вашу программу, тогда все ошибки исчезнут.