2013-07-09 2 views
2

Похожий вопрос без реального ответа, применимого к моему делу: CLICK
Вопрос, который я исследовал, прежде чем задавать здесь - CLICKКомпиляция очень большой .cpp файлу

Я использую MinGW64, чтобы попытаться собрать очень большой .cpp файл (>13k), но у меня также есть доступ к Visual Studio 2010 - если у кого-то есть решение с этим, не стесняйтесь говорить мне.
Я обнаружил ошибку на этапе сборки -

... 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 часов Теперь.

Update:

Как полагают некоторые люди, я просто разделить файл на 2 исходных файлов и создать заголовок для них - спасибо.

Второе обновление:

Компиляция еще не закончена (5 дней !!!), даже после создания заголовка и разбиения файла на 4 маленьких.

Final

Эта проблема остается нерешенной - даже после того, как по совету от всех, кто разместил я до сих пор не удавалось собрать это.

+0

В чем проблема с «разделяйте те методы, которые называют друг друга». Это нормальная структура файлов C/C++ – Mark

+0

Ну, у меня есть метод под названием 'foo', который вызывает метод' bar' внутри - если я помещаю 'foo 'in' file1.cpp' и bar в 'file2.cpp' Я получаю ошибку компиляции. – baibo

+3

Для меня линии 13K не кажутся такими большими. Вы уверены, что это не случай, когда ваш файл делает что-то странное - например. включая тот же файл рекурсивно навсегда, или что-то в этом роде? –

ответ

1

Не знаете о GCC, но вы пробовали флаг /bigobj для этого файла в VisualStudio?
У меня была такая же проблема с большим файлом, и это фактически решило проблему. Так что стоит попробовать.

Из MSDN:

По умолчанию объектный файл может содержать до 65536 (2^16) адресуемых секций. В этом случае независимо от того, какая целевая платформа указана./bigobj увеличивает эту пропускную способность до 4 294 967 296 (2^32).

Подробнее об этом here.

Смежные вопросы