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.
Спасибо,
Адам.
Ответы
Ответ 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 должны быть обновлены до последних версий, и вы сможете получить поэтапную ошибку.