나는 boost :: msm 프레임 워크를 기반으로하는 템플릿을 사용하는 코드를 컴파일 중이다. g ++ 4.7.1로 컴파일하면 cc1plus 프로세스가 약 2.4Gb의 RAM 크기에 도달하고 "가상 메모리가 부족합니다 : 메모리를 할당 할 수 없습니다"라는 오류로 실패합니다.g ++ 4.7.1에서 컴파일시 가상 메모리 제한이 적용됩니까?
32 비트 컴파일러 (64 비트로 전환하는 것은 ATM이 아닙니다)를 사용하고 있으며, 기계 자체는 16Gb의 RAM이있는 64 비트 우분투이며 컴파일은 64 비트 chroot에서 수행됩니다. 데비안 wheezy 배포판. 컴파일 할 때 충분한 RAM이 있으므로 물리적으로 사용 가능한 RAM이 없기 때문에 컴파일이 실패하면 먼저 4Gb에 도달해야합니다. 나는 "ulimit -m"옵션으로 다른 값으로 설정하고 더 작은 크기로 설정하여 컴파일러가 일찍 실패하도록하지만 "무제한"으로 남겨지면 위의 2 + Gb에서 실패합니다.
그래서 뭔가 다른 것 같아요. 아마도 비슷한 문제가 발생하여 한계를 변경하는 방법을 알고있을 것입니다.
"64 비트로 전환"은 GCC 자체의 64 비트 빌드를 사용하거나 GCC를 사용하여 64 비트 실행 파일을 빌드하는 것을 의미합니까? – MSalters
64 비트 g ++ 사용을 의미합니다 – Kikosha