Название: Как увеличить размер стека приложения
Отправлено: agor от Сентябрь 18, 2009, 15:41
Не подскажите как увеличить размер стека для всего приложения под Windows. Я использую QDevelop или QCreator. На сколько я представляю это опция для компилятора или линковщика, которая должна быть указана make файле?
Название: Re: Как увеличить размер стека приложения
Отправлено: KADABRA от Сентябрь 18, 2009, 16:26
Не подскажите как увеличить размер стека для всего приложения под Windows. Я использую QDevelop или QCreator. На сколько я представляю это опция для компилятора или линковщика, которая должна быть указана make файле?
google://mingw stack size (http://www.google.com.ua/search?q=mingw+stack+size&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a)
Название: Re: Как увеличить размер стека приложения
Отправлено: agor от Сентябрь 18, 2009, 17:01
Спасибо. Вот нашел замечательные строчки gcc -Wl,--stack=<STACK_SIZE> Еще бы понять куда и как их в make файл вставить. И по-моему, когда я из среды запускаю перестроить проект, запустится qmake, который перезапишет Makefile, им же и руководствуется компилятор и линковщик.
Название: Re: Как увеличить размер стека приложения
Отправлено: lit-uriy от Сентябрь 18, 2009, 18:39
В файл проекта (pro-файл) для gcc: QMAKE_CFLAGS += ....
для g++: QMAKE_CXXFLAGS += ....
Полезно взглянуть на содержимое файла: %QTDIR%\mkspecs\ИмяПлатформы\qmake.conf , где ИмяПлатформы - для виндавоза и MinGW32 = win32-g++
Название: Re: Как увеличить размер стека приложения
Отправлено: BRE от Сентябрь 18, 2009, 18:46
Это опция линкера, поэтому скорее всего: QMAKE_LFLAGS += ...
Название: Re: Как увеличить размер стека приложения
Отправлено: agor от Сентябрь 18, 2009, 19:27
Спасибо, уже чувствую что не один :) А есть добрые люди. вот мой файл из казанного каталога: # # qmake configuration for win32-g++ # # Written for MinGW #
MAKEFILE_GENERATOR = MINGW TEMPLATE = app CONFIG += qt warn_on release link_prl copy_dir_files debug_and_release debug_and_release_target precompile_header QT += core gui DEFINES += UNICODE QT_LARGEFILE_SUPPORT QMAKE_COMPILER_DEFINES += __GNUC__ WIN32
QMAKE_EXT_OBJ = .o QMAKE_EXT_RES = _res.o
QMAKE_CC = gcc QMAKE_LEX = flex QMAKE_LEXFLAGS = QMAKE_YACC = byacc QMAKE_YACCFLAGS = -d QMAKE_CFLAGS = QMAKE_CFLAGS_DEPS = -M QMAKE_CFLAGS_WARN_ON = -Wall QMAKE_CFLAGS_WARN_OFF = -w QMAKE_CFLAGS_RELEASE = -O2 QMAKE_CFLAGS_DEBUG = -g QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
QMAKE_CXX = g++ QMAKE_CXXFLAGS = $$QMAKE_CFLAGS QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD QMAKE_CXXFLAGS_RTTI_ON = -frtti QMAKE_CXXFLAGS_RTTI_OFF = -fno-rtti QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions -mthreads QMAKE_CXXFLAGS_EXCEPTIONS_OFF = -fno-exceptions
QMAKE_INCDIR = QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS] QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
QMAKE_LINK = g++ QMAKE_LINK_C = gcc QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads -Wl QMAKE_LFLAGS_EXCEPTIONS_OFF = QMAKE_LFLAGS_RELEASE = -Wl,-s QMAKE_LFLAGS_DEBUG = QMAKE_LFLAGS_CONSOLE = -Wl,-subsystem,console QMAKE_LFLAGS_WINDOWS = -Wl,-subsystem,windows QMAKE_LFLAGS_DLL = -shared QMAKE_LINK_OBJECT_MAX = 10 QMAKE_LINK_OBJECT_SCRIPT= object_script
QMAKE_LIBS = QMAKE_LIBS_CORE = -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32 QMAKE_LIBS_GUI = -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lws2_32 -lole32 -luuid -luser32 -ladvapi32 QMAKE_LIBS_NETWORK = -lws2_32 QMAKE_LIBS_OPENGL = -lopengl32 -lglu32 -lgdi32 -luser32 QMAKE_LIBS_COMPAT = -ladvapi32 -lshell32 -lcomdlg32 -luser32 -lgdi32 -lws2_32 QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain
!isEmpty(QMAKE_SH) { MINGW_IN_SHELL = 1 QMAKE_DIR_SEP = / QMAKE_COPY = cp QMAKE_COPY_DIR = xcopy /s /q /y /i QMAKE_MOVE = mv QMAKE_DEL_FILE = rm QMAKE_MKDIR = mkdir QMAKE_DEL_DIR = rmdir QMAKE_CHK_DIR_EXISTS = test -d } else { QMAKE_COPY = copy /y QMAKE_COPY_DIR = xcopy /s /q /y /i QMAKE_MOVE = move QMAKE_DEL_FILE = del QMAKE_MKDIR = mkdir QMAKE_DEL_DIR = rmdir QMAKE_CHK_DIR_EXISTS = if not exist }
QMAKE_MOC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}moc.exe QMAKE_UIC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}uic.exe QMAKE_IDC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}idc.exe
QMAKE_IDL = midl QMAKE_LIB = ar -ru QMAKE_RC = windres QMAKE_ZIP = zip -r -9
QMAKE_STRIP = strip QMAKE_STRIPFLAGS_LIB += --strip-unneeded load(qt_config)
т.е. как я понимаю или в него или в Makefile проекта добавить строку: QMAKE_CFLAGS += -Wl,--stack= 32768 и все будет ...
Название: Re: Как увеличить размер стека приложения
Отправлено: BRE от Сентябрь 18, 2009, 19:32
т.е. как я понимаю или в него или в Makefile проекта добавить строку: QMAKE_CFLAGS += -Wl,--stack= 32768 и все будет ...
В файл проекта (pro-файл)
Название: Re: Как увеличить размер стека приложения
Отправлено: agor от Сентябрь 18, 2009, 19:53
А да, сасибо. Не внимателен. Попробую, о результатах доложу ... :)
Название: Re: Как увеличить размер стека приложения
Отправлено: agor от Сентябрь 19, 2009, 21:17
Все работает. Программе, действительно, Wind-а стала больше выделять памяти. Вот, кому интересно фрагмент .pro файла: licensing/regdialogimpl.h \ src/editdnsimpl.h QT += network \ sql \ xml \ gui \ webkit RESOURCES += ui/mainwinow.qrc win32:RC_FILE = ui/winmain.rc QMAKE_CFLAGS += -Wl,--stack= 67108864
Спасибо lit-uriy и BRE за советы...
|