Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: titan83 от Май 06, 2017, 11:49



Название: [Решено] Не могу собрать свое приложение под виндой с mingw
Отправлено: titan83 от Май 06, 2017, 11:49
Коллеги, здравствуйте.
Собирал всегда под линкусом, тут надо стало собрать под windows (win 7x64).
Скачал версию с mingw, установил. Просты приложения собираются, но мое - нет.
У меня там подключается довольно большая библиотека (hpp ~1,3M), и как результат я имею такую ошибку:
Код:
g++ -c -pipe -fno-keep-inline-dllexport -O2 -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\qWorksheet -I. -I..\qWorksheet\src\3rdparty\qsint\include -I..\qWorksheet\src\login -I..\qWorksheet\src\browser -I..\qWorksheet\src\worksheet -I..\qWorksheet\src\database -I..\qWorksheet\src\shared -I..\..\..\..\Qt\Qt5.8.0\5.8\mingw53_32\include -I..\..\..\..\Qt\Qt5.8.0\5.8\mingw53_32\include\QtWidgets -I..\..\..\..\Qt\Qt5.8.0\5.8\mingw53_32\include\QtGui -I..\..\..\..\Qt\Qt5.8.0\5.8\mingw53_32\include\QtANGLE -I..\..\..\..\Qt\Qt5.8.0\5.8\mingw53_32\include\QtSql -I..\..\..\..\Qt\Qt5.8.0\5.8\mingw53_32\include\QtCore -Irelease -I. -I..\..\..\..\Qt\Qt5.8.0\5.8\mingw53_32\mkspecs\win32-g++  -o release\qwshworksheetcellformula.o ..\qWorksheet\src\worksheet\cell\qwshworksheetcellformula.cpp
C:/Qt/Qt5.8.0/Tools/mingw530_32/bin/../lib/gcc/i686-w64-mingw32/5.3.0/../../../../i686-w64-mingw32/bin/as.exe: release\qwshworksheetcellformula.o: too many sections (39030)
{standard input}: Assembler messages:
{standard input}: Fatal error: can't write release\qwshworksheetcellformula.o: File too big
C:/Qt/Qt5.8.0/Tools/mingw530_32/bin/../lib/gcc/i686-w64-mingw32/5.3.0/../../../../i686-w64-mingw32/bin/as.exe: release\qwshworksheetcellformula.o: too many sections (39030)
{standard input}: Fatal error: can't close release\qwshworksheetcellformula.o: File too big
Makefile.Release:5110: recipe for target 'release/qwshworksheetcellformula.o' failed
mingw32-make[1]: *** [release/qwshworksheetcellformula.o] Error 1
mingw32-make[1]: Leaving directory 'C:/Users/user/Downloads/build-qWsh-Desktop_Qt_5_8_0_MinGW_32bit-Release'
Makefile:34: recipe for target 'release' failed
mingw32-make: *** [release] Error 2
13:38:07: The process "C:\Qt\Qt5.8.0\Tools\mingw530_32\bin\mingw32-make.exe" exited with code 2.
Error while building/deploying project qWsh (kit: Desktop Qt 5.8.0 MinGW 32bit)
When executing step "Make"

Читаю, вижу, что надо добавить опции компилятора -Wa,-mbig-obj
Добавляю в свой pro-файл:
Код:
QMAKE_CXXFLAGS += -Wa
QMAKE_CXXFLAGS += -mbig-obj

Итог печален:
Код:
C:\Qt\Qt5.8.0\5.8\mingw53_32\bin\qmake.exe -o Makefile ..\qWorksheet\qWsh.pro -spec win32-g++
C:/Qt/Qt5.8.0/Tools/mingw530_32/bin/mingw32-make -f Makefile.Release
mingw32-make[1]: Entering directory 'C:/Users/user/Downloads/build-qWsh-Desktop_Qt_5_8_0_MinGW_32bit-Release'
g++ -c -pipe -fno-keep-inline-dllexport -Wa -mbig-obj -O2 -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\qWorksheet -I. -I..\qWorksheet\src\3rdparty\qsint\include -I..\qWorksheet\src\login -I..\qWorksheet\src\browser -I..\qWorksheet\src\worksheet -I..\qWorksheet\src\database -I..\qWorksheet\src\shared -I..\..\..\..\Qt\Qt5.8.0\5.8\mingw53_32\include -I..\..\..\..\Qt\Qt5.8.0\5.8\mingw53_32\include\QtWidgets -I..\..\..\..\Qt\Qt5.8.0\5.8\mingw53_32\include\QtGui -I..\..\..\..\Qt\Qt5.8.0\5.8\mingw53_32\include\QtANGLE -I..\..\..\..\Qt\Qt5.8.0\5.8\mingw53_32\include\QtSql -I..\..\..\..\Qt\Qt5.8.0\5.8\mingw53_32\include\QtCore -Irelease -I. -I..\..\..\..\Qt\Qt5.8.0\5.8\mingw53_32\mkspecs\win32-g++  -o release\qwshworksheetcellformula.o ..\qWorksheet\src\worksheet\cell\qwshworksheetcellformula.cpp
g++: error: unrecognized command line option '-Wa'
g++: error: unrecognized command line option '-mbig-obj'

Что можно предпринять?
Спасибо.


Название: Re: Не могу собрать свое приложение под виндой с mingw
Отправлено: ViTech от Май 06, 2017, 13:12
Читаю, вижу, что надо добавить опции компилятора -Wa,-mbig-obj

Это одна опция для ассемблера (https://gcc.gnu.org/onlinedocs/gcc/Assembler-Options.html#Assembler-Options). Попробуйте как-нибудь так (может в кавычки надо заключить):
Код
C++ (Qt)
QMAKE_CXXFLAGS += -Wa,-mbig-obj
 


Название: Re: Не могу собрать свое приложение под виндой с mingw
Отправлено: titan83 от Май 06, 2017, 19:23
Читаю, вижу, что надо добавить опции компилятора -Wa,-mbig-obj

Это одна опция для ассемблера (https://gcc.gnu.org/onlinedocs/gcc/Assembler-Options.html#Assembler-Options). Попробуйте как-нибудь так (может в кавычки надо заключить):
Код
C++ (Qt)
QMAKE_CXXFLAGS += -Wa,-mbig-obj
 
Благодарю за ответ.
Вы правы на счет синтаксиса, я по глупости разделил одну команду на две строки, естественно, это не работало.
Но, к сожалению, проблему это так и не решило. Я пробовал убирать оптимизацию (O0), пробовал менять --hash-table=2048, пробовал на машине с большим объемом физической памяти.
Все те же грабли.
Видимо, придется пробовать в MSVC.


Название: Re: Не могу собрать свое приложение под виндой с mingw
Отправлено: titan83 от Май 07, 2017, 16:01
В общем, только переползанием на msvc удалось собрать под виндой мой проект.