티스토리 뷰



평상시에는 라즈베리 파이에서 빌드해도 전혀 문제가 없던 프로젝트인데 갑자기 별다른 에러 코드도 없이 컴파일이 중단되었다. 이런 황당한 일이! 소스 코드의 오류가 아닌데 빌드가 되지 않다니.... 몇 번 재시도하면서 살펴보니 조금 사이즈가 큰 소스 코드를 컴파일하는 시점에 시스템 메모리가 거의 소모되면서 컴파일이 중단되는 것이었다.

"g++: fatal error: 죽었음 signal terminated program cc1plus" 또는

"g++: fatal error: killed signal terminated program cc1plus" 메시지가 나올 뿐 별다른 힌트를 제공하지 않았다. 찾아보니 메모리 부족으로 인한 현상이 많다고 한다. 실제 메모리를 늘려주면 좋겠지만 가상 메모리를 늘리는 쉬운 방법이 있다.

 

sudo dphys-swapfile swapoff

일단 위의 명령으로 스왑 메모리 사용을 중지시킨다.

 

"sudo vi /etc/dphys-swapfile" 등의 명령으로 설정 파일을 열어 CONF_SWAPSIZE 항목을 원하는 값으로 수정한다. 위의 그림은 100M로 지정되어 있는 모습이고 1G로 바꾸려면 1024를 입력하면 된다.

 

sudo dphys-swapfile setup
sudo dphys-swapfile swapon
sudo reboot

크기를 조정한 다음에는 setup으로 가상 메모리를 재설정하고 가상 메모리를 가동시킨다음 시스템을 재가동시켜 보아서 가상 메모리가 제대로 올라왔는지 확인하면 된다.

 

위의 그림처럼 "grep SwapTotal /proc/meminfo" 명령으로 가상 메모리의 크기를 확인할 수 있다.

 

메모리를 확장한 다음에 다시 빌드해 보니 위의 그림처럼 컴파일러가 사용하는 메모리는 여전히 많았지만 넉넉한 VM 크기 덕분에 빌드는 정상적으로 수행되었다.

 

 


댓글
댓글쓰기 폼