2010-02-16 2 views
0

Я знаю, как установить размер стека неограничен в командной строке:Установить размер стека в файле makefile?

ulimit -s unlimited 

И в Баш, когда я установил размер стека в неограниченном количестве, моих пробегов кода и завершается успешно.

Могу ли я установить размер стека неограниченным (или некоторым заданным размером) в make-файле (с g ++ в качестве компилятора)? Если да, то как?

Примечание: Я могу отправлять только исходные файлы (* .cpp, * .h) и файл makefile для моего проекта. То есть, (1) выполняется makefile, (2) код запускается. Таким образом, никакие скрипты или другие специальные инструкции не выполняются заранее, поэтому изменения должны быть сделаны в make-файле ... если у кого-то нет других/лучших/блестящих идей?

Заранее благодарен!

ответ

3

Ну, еще одна блестящая идея, чтобы избежать использования все ограничения (как вызов его в виде отдельного приложения в вашем Makefile (или с помощью скриптов и т.д.). Это делается путем копирования функциональности команды ulimit путем ее дублирования в вашей собственной программе (например, в основном).

Для этого просмотрите man 2 setrlimit (manpage) и взгляните на RLIMIT_STACK , и вы, вероятно, захотите установить его в RLIM_INFINITY

2

Вы можете сделать это за одну команду основе:

target: 
    ulimit -s unlimited && foo 

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

Вы можете сделать что-то более общее, как это:

run_%: % 
    ulimit -s unlimited && ./$^ 

# This will try to run a program called "progname" in the current 
# directory with an unlimited stack 
all: run_progname 
Смежные вопросы