Как увеличить размер исполняемого стека gcc?

У меня есть большая метапрограмма Boost/Spirit, которая сбрасывает стек gcc, когда я пытаюсь ее скомпилировать.

Как я могу увеличить размер стека gcc, чтобы я мог скомпилировать эту программу?

Примечание: бесконечной рекурсии не происходит, но случайной рекурсии достаточно, чтобы исчерпать стек gcc.


person Jeff Leonard    schedule 21.07.2009    source источник
comment
Мне интересно - над чем вы работаете? Если ваши метапрограммы взорвут стек компилятора, это настоящий подвиг.   -  person Michael Kohne    schedule 21.07.2009
comment
Я работаю над DSL для анализа событий в реальном времени в механизме распределенных правил.   -  person Jeff Leonard    schedule 21.07.2009


Ответы (3)


В Linux вы можете увеличить размер стека в файле /etc/security/limits.conf.

Вы можете проверить текущий размер стека, используя

$ ulimit -s
8192

Затем разверните стек, чтобы он был вдвое больше:

youruser    soft    stack    16384

А потом перезайти.

Это увеличит размер стека для всех исполняемых файлов, которые вы запускаете, а не только для GCC.

person LiraNuna    schedule 21.07.2009
comment
Если это мягкий лимит, его можно увеличить без повторного входа в систему, введя ulimit -s ‹limit›. Конечно, это относится только к текущей оболочке. - person bdonlan; 21.07.2009
comment
Я просто использовал очень большое значение: sourav soft stack 2000000. Затем я не смог запустить такие приложения, как хром и falkon, а также браузеры Edge в Linux! Все они записывали 10 ГБ на мой SSD, когда я их запускал... - person S.Goswami; 28.11.2020

Я использую это в своем скрипте компилятора:

CFLAGS += -Wl,--стек,10485760

person Tanguy    schedule 25.03.2015

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

person sybreon    schedule 21.07.2009