2013-07-09 3 views
2

비슷한 질문을 컴파일 : CLICK
내가 여기에 요청하기 전에 연구 질문 - CLICK내 경우에 적용 진짜 답 매우 큰 .cpp 파일을

을 나는 시도하고 .cpp 매우 큰 컴파일 MinGW64을 사용하고 있습니다 파일 (>13k 라인)을 사용하고 있지만 Visual Studio 2010에 대한 액세스 권한도 있습니다. 누군가가이를 사용하는 솔루션을 가지고 있다면 자유롭게 말해주십시오.
나는 조립 단계에서 오류를 식별 한 - 5 시간에 걸쳐서 컴파일이 실행되는 방법 -

... too many sections (33396) 
C:\Users\username\AppData\Local\Temp\ccnAocvD.s: Assembler messages: 
C:\Users\username\AppData\Local\Temp\ccnAocvD.s: Fatal error: can't write 
CMakeFiles/source.dir/sourcecode.cpp.obj: File too big 

나는 현재 -Os, --param ggc-min-expand=0, 내 동료 두에 의해 제안 --param ggc-min-heapsize=4096로 컴파일을 실행 해요 지금.

업데이트 : 어떤 사람들에 의해 제안

, 난 그냥이 개 원본 파일에 파일을 분할하고 그들을 위해 헤더 생성합니다 - 감사합니다.

두 번째 업데이트 :

컴파일이 아직 (5 일!)이 완료되지 않은, 심지어 헤더를 생성하고 4 작은 것들로 파일을 분할 후.

최종

이 문제는 해결되지 않은 남아 - 심지어 내가 여전히 컴파일 관리 할 수있는 게시 된 모든 사람의 조언을 따른 후에.

+0

"서로 호출하는 메서드를 분리하는"문제는 일반적인 C/C++ 파일 구조입니다. – Mark

+0

글쎄, 메소드'bar'를 호출하는'foo'라는 메서드가 있습니다 - 만약'foo ''file1.cpp'와'file2.cpp'의 bar에 컴파일 에러가 발생합니다. – baibo

+3

나에게 13K 라인은 그렇게 큰 것 같지 않습니다. 파일에서 이상한 일이 발생하지 않았는지 확인하십시오. 예 : 재귀 적으로 같은 파일을 영원히 포함하는 것입니까? –

답변

1

GCC에 대해 확실하지 않지만 Visual Studio에서 특정 파일에 대해 /bigobj 플래그를 시도 했습니까?
큰 파일에서 동일한 문제가 발생했으며 문제가 실제로 해결되었습니다. 따라서 한번 시도해 볼 가치가 있습니다.

MSDN에서

:

기본적으로는, 오브젝트 파일은 65,536 (2^16) 주소 섹션까지 보유 할 수 있습니다. 어떤 대상 플랫폼이 지정 되더라도 상관 없습니다./bigobj는 주소 용량을 4,294,967,296 (2^32)으로 늘립니다.

기타 정보 here.