2012-05-31 5 views
12

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

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

editbin cc1plus.exe /STACK 33554432 

, и я также пытался без толка:

editbin cc1plus.exe /STACK 32768k 

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

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

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

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

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 

А вот Makefile, что я бегу как до сборки марки для создания моих .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.

Thank you, Adam.

+0

Все еще не зафиксировано в MinGW-w64 4.9.2 (открытие файла PCH 180 МБ из-за сбоя wxWidgets-3.0.2) –

+0

По-прежнему падает на MinGW-w64 gcc 5.1.0 (http://sourceforge.net/projects/mingw-w64/files/Toolchains% 20targetting% 20Win32/Personal% 20Builds/dongsheng-daily /) – ollydbg23

+0

Я просто сделал тест на cygwin g ++ 4.9.2, и я не вижу проблемы с сбоем. См. Мой отчет здесь: https: //gcc.gnu.org/bugzilla/show_bug.cgi? Id = 56926 # c12 – ollydbg23

ответ

4

Существует сообщение об ошибке 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] Set a larger pch file size limit? was : can anyone supply a debug version of cc1plus.exe?

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

+3

@ ollydbg12, а отчет старше года и подсчет ... он определенно выглядит как люди gcc stunk на устранение этой проблемы ... Может быть, им нужно пойти на SO и предложить щедрость: P –

+0

Вот хорошая новость: [MinGW-w64 - для 32-битных и 64-битных Windows - Browse/Toolchains, предназначенных для Win32/Personal Builds/mingw -builds/5.2.0 на SourceForge.net] (https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/5.2.0/) В этом выпуске есть pch crash исправить патч в, и работает достаточно хорошо. – ollydbg23

+0

@ ollydbg12 теперь ему просто нужно сделать его в комплекте с блоком :: block ', который наивысшая возможная версия - только gcc (tdm-2) 4.8.1, и это в коде :: blocks' bleedingedge/custom/unstable distro –

0

У меня была аналогичная проблема, и решить ее путем обновления MinGW:

  1. Run оболочки (ЦМД или ш)
  2. Обновить список пакетов:

    mingw-get update

  3. После этого пробега модернизация

    mingw-get upgrade

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

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