Подтвердить что ты не робот

Cc1plus.exe сбой при использовании большого предварительно скомпилированного файла заголовка

У меня возникла проблема с использованием предварительно скомпилированных файлов заголовков с помощью MinGW. Компилятор, похоже, находит предварительно скомпилированный файл заголовка, но cc1plus.exe сбой сразу после (cc1plus.exe перестает работать).

Я понял, что это может быть связано с небольшим размером стека cc1plus.exe, поэтому я сделал следующее, чтобы увеличить его:

editbin cc1plus.exe /STACK 33554432

и я также попытался воспользоваться:

editbin cc1plus.exe /STACK 32768k

Это, однако, не решило его, так как оно все равно продолжает сбой при попытке скомпилировать мое приложение.

Кстати, я использую последнюю версию MinGw (gcc v 4.6.2) и новейший CDT Eclipse, если это имеет значение.

Я могу увеличить размер стека cc1plus.exe правильно? Кто-нибудь знает, как действовать дальше, когда я читаю бесчисленные статьи и темы, но на данный момент я немного из идей.

g++, похоже, находит и принимает мой предварительно скомпилированный файл заголовка:

Building file: ../src/AdvancedOgreFramework.cpp
Invoking: GCC C++ Compiler
g++ -DHAVE_W32API_H -DNO_GCC_PRAGMA -I"C:\DevelopmentTools\workspaces\workspace_cpp
\MyGame\inc" -I"C:\docs\ogre3d\CEGUI\CEGUI-0.7.6\cegui\include\falagard" -I"C:\docs 
\ogre3d\CEGUI\CEGUI-0.7.6\cegui\include\RendererModules\Ogre" -I"C:\docs\ogre3d\CEGUI
\CEGUI-0.7.6\cegui\include" -I"C:\docs\ogre3d\ogre1.8.0_mingw_sdk\OgreSDK_MinGW_v1-8-0
\include" -O0 -g3 -H -Wall -c -Winvalid-pch -MMD -MP -MF"src/AdvancedOgreFramework.d" 
-MT"src/AdvancedOgreFramework.d" -o "src/AdvancedOgreFramework.o" "../src 
/AdvancedOgreFramework.cpp"
! C:\DevelopmentTools\workspaces\workspace_cpp\MyGame\inc/Precompiled.h.gch

И вот make файл, который я запускаю как pre-build make для создания моего .gch:

C_FLAGS = -O0 -g3 -Wall -c -MMD -MP
INC_PATH = -IC:/docs/ogre3d/ogre1.8.0_mingw_sdk/OgreSDK_MinGW_v1-8-0/include -IC:/docs
/ogre3d/CEGUI/CEGUI-0.7.6-mingw/cegui/include -IC:/docs/ogre3d/CEGUI/CEGUI-0.7.6-
mingw/cegui/include/RendererModules/Ogre -IC:/docs/ogre3d/CEGUI/CEGUI-0.7.6-mingw/cegui
/include/falagard


all: Precompiled.h.gch

@echo 'Finished precompiling headers....'

Precompiled.h.gch: Precompiled.h    
    @echo 'Building target: [email protected]'
g++.exe Precompiled.h $(INC_PATH) $(C_FLAGS)     

clean:
rm Precompiled.h.gch

Размер .gch имеет размер более 169 МБ, поскольку я пытаюсь перекомпилировать большинство заголовков Ogre3D и CEGUI.

Спасибо, Адам.

4b9b3361

Ответ 1

В вашей проблеме есть сообщение об ошибке GCC: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56926, он выглядит как большой файл pch (обычно более 150 МБ ) может вызвать эту проблему.

Изменить: 2015-05-31. Недавно я нашел жесткое предельное значение для файла pch в источнике GCC для инструментальной цепочки mingw или mingw-w64, что составляет 128M. Я хотел бы предложить кого-то создать недавно созданный GCC, чтобы выяснить, разрешает ли он эту проблему. См. Мой пост в форуме mingw-w64: [Mingw-w64-public] Установите максимальный размер файла pch? было: может ли кто-нибудь предоставить отладочную версию cc1plus.exe?

Edit: 2015-06-02. Я могу полностью исправить эту проблему, увеличив значение жесткого ограничения файла pch, см. Комментарий 17 в gcc bugzilla.

Ответ 2

У меня была аналогичная проблема и разрешил ее, обновив mingw:

  • Запустить оболочку (cmd или sh)
  • Обновить список пакетов:

    mingw-get update

  • После этого обновления

    mingw-get upgrade

После этого ваши пакеты mingw должны быть обновлены до последних версий, и вы сможете получить поэтапную ошибку.