Russian Qt Forum

Компиляторы и платформы => Компиляторы => Тема начата: Racheengel от Март 11, 2016, 14:02



Название: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: Racheengel от Март 11, 2016, 14:02
Всем привет,

столкнулся со следующей проблемой: при сборке проекта "китовым" MinGW из пакета Qt 5.5.1 появляется такая вот ощибка:

cc1plus.exe: out of memory allocating 1052671 bytes

До этого компилер отжирает под 2 гига памяти, хотя на машине оперативы достаточно (нехватка памяти не может быть проблемой).

Гугл советовал добавить в проект что-то типа
      QMAKE_LFLAGS += "-Wl,--stack=0x2000000"
      QMAKE_LFLAGS += "-Wl,--large-address-aware"

но это никак не спасает :(

Может кто знает, в чем может быть грабля?
Спасибо заранее)


Название: Re: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: kai666_73 от Март 11, 2016, 14:59
Может проблема в винде - не дает она одному процессу отожрать более 2 гигов  ???


Название: Re: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: Racheengel от Март 11, 2016, 15:10
Может проблема в винде - не дает она одному процессу отожрать более 2 гигов  ???

Винда 7, 64 бит.


Название: Re: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: Old от Март 11, 2016, 15:13
Винда 7, 64 бит.
А компилятор 32 битный.


Название: Re: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: Racheengel от Март 11, 2016, 15:23
Винда 7, 64 бит.
А компилятор 32 битный.

Оба, но это неважно. Приложение мультиплатформенное собирается нормально и 32-битными компиляторами (кроме MinGW).


Название: Re: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: ViTech от Март 11, 2016, 15:53
Precompiled headers есть? Может из-за них такая ошибка происходит? Особенно с debug-сборкой, там эти precompiled файлы за сотню Мб могут получаться. Такая же ошибка была у меня или нет, уже не помню, но пришлось отключать precompiled.


Название: Re: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: Old от Март 11, 2016, 16:00
Оба, но это неважно.
Это важно.
Компилятор, как 32 битное приложение, имеет доступ только к 2 Гб памяти. И не важно сколько памяти реально стоит на машине, это ограничение адресного пространства 32 битных процессов.


Название: Re: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: Racheengel от Март 11, 2016, 16:11
Precompiled headers есть? Может из-за них такая ошибка происходит? Особенно с debug-сборкой, там эти precompiled файлы за сотню Мб могут получаться. Такая же ошибка была у меня или нет, уже не помню, но пришлось отключать precompiled.

Нету. Собирается в релизе. Проблема ТОЛЬКО в видне, в линуксе та же версия собирается без проблем.

Компилятор, как 32 битное приложение, имеет доступ только к 2 Гб памяти. И не важно сколько памяти реально стоит на машине, это ограничение адресного пространства 32 битных процессов.

Это понятно, что проблема с компилятором. Скорее всего баг. Странно то, что в "интернетах" нету решения проблемы. Возможно, какой-нибудь ключик или еще что нибудь. Менять компиль неохота - придется пересобирать все либы, а это пара рабочих дней :*(


Название: Re: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: Old от Март 11, 2016, 16:16
Это понятно, что проблема с компилятором. Скорее всего баг. Странно то, что в "интернетах" нету решения проблемы. Возможно, какой-нибудь ключик или еще что нибудь. Менять компиль неохота - придется пересобирать все либы, а это пара рабочих дней :*(
Почему баг. Компилятору не хватает памяти, он останавливается с сообщение об ошибке. Все честно.
Сейчас все больше будет появляться кода, который не возможно будет собирать 32 битными компиляторами. Шаблонная магия при компиляции требует кучи памяти. :)


Название: Re: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: Racheengel от Март 11, 2016, 16:20
Почему баг. Компилятору не хватает памяти, он останавливается с сообщение об ошибке. Все честно.
Сейчас все больше будет появляться кода, который не возможно будет собирать 32 битными компиляторами. Шаблонная магия при компиляции требует кучи памяти. :)

Древняя 2008-я студия и линуксовый 32-битный GCC отлично справляются с тем же кодом :)
Если MinGW это сделать не в состоянии - значит, с ним не все в порядке, не? :)


Название: Re: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: Old от Март 11, 2016, 16:25
Древняя 2008-я студия и линуксовый 32-битный GCC отлично справляются с тем же кодом :)
Если MinGW это сделать не в состоянии - значит, с ним не все в порядке, не? :)
32 битному GCC доступно 3Гб (потому что linux), MinGW доступно только 2 Гб (ибо венда). Про студию ничего не могу сказать, скорее всего она на что-то кладет. :)


Название: Re: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: qate от Март 11, 2016, 16:57
Проблема ТОЛЬКО в видне, в линуксе та же версия собирается без проблем.

вот и решение )


Название: Re: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: Racheengel от Март 11, 2016, 17:27
Ладно, придется, видать, компиль на свалку отнести :(


Название: Re: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: ViTech от Март 11, 2016, 18:00
Кстати, в MinGW 4.9.2 и по другим поводам ошибки компилятора типа "internal error" бывало выскакивали. Поставил MinGW 5.2.0, там это поправлено было. Причём заменял грубо: symlink на папку с новой версией mingw (чтоб Qt думало, как будто ничего не поменялось), ибо пересобирать кучу всего неохота было. Для тестовой разработки прокатывало :).


Название: Re: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: Racheengel от Март 11, 2016, 18:47
То есть при линковке с 5.2.0 не должно быть проблем? Я пробовал заменить на 4.8.2 - у меня ничего не линковалось, куча ошибок :(


Название: Re: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: Alex Custov от Март 11, 2016, 19:11
сборка однопоточная? Сколько памяти съедает компилятор и линковщик в мониторе задач?


Название: Re: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: Racheengel от Март 11, 2016, 19:27
сборка однопоточная? Сколько памяти съедает компилятор и линковщик в мониторе задач?

Судя по монитору, собирается только одним потоком.
Максимум, что я видел - это около 1 960 000 K.
Вполне возможно, что просто сдыхает компиль.


Название: Re: Проблема c MinGW 4.9.2 & Qt 5.5.1
Отправлено: ViTech от Март 11, 2016, 19:32
То есть при линковке с 5.2.0 не должно быть проблем? Я пробовал заменить на 4.8.2 - у меня ничего не линковалось, куча ошибок :(

Я попробовал "на авось" - всё собирается нормально. Т.е. к Qt собранному mingw 4.9.2 из кита линковались мои либы и приложения на mingw 5.2.0. Пока то, что мне нужно для тестовой разработки собирается, в детали я не вникал, может не всегда такое прокатывает. Так-то ясное дело, что всё нужно одной версией собирать, но это потом, к продакшену ближе :).