2013-04-29 5 views
1

Если бы мой текущей среде,gmake изменить ограничение размера стека

$ ulimit -s 
10240 

Но если я запускаю процесс через gmake, размер стека не ограничен. Например (;: чтобы сделать gmake использовать оболочку для выполнения команды, в противном случае он будет пытаться найти исполняемый файл с таким именем)

$ cat Makefile 
default: 
     ulimit -s; : 
$ gmake 
ulimit -s; : 
unlimited 
  • возможно получить gmake не меняя предела ?

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

Редактировать: @MadScientist узнал меня, что это проблема с 3.81, которая зафиксирована в 3.82. Но я все равно буду ценить работу.

ответ

2

Это звучит как https://savannah.gnu.org/bugs/?22010 исправлено в GNU make 3.82.

Если вы не можете обновить свою версию GNU make (3.82, например, уже более 3 лет ...), и вы не можете заархивировать патч, вы можете попробовать что-то вроде этого (непроверенный); создать скрипт для изменения стеки:

$ cat stacksh 
#!/bin/sh 
ulimit -s ... 
exec /bin/sh "[email protected]" 

$ chmod 755 stacksh 

Затем в Makefile, сбросьте SHELL использовать скрипт:

SHELL := /path/to/stacksh 

Теперь сделайте будет вызывать ваш скрипт для запуска команд, вместо /bin/sh

+0

Да, это так. Я по-прежнему ценю работу. – AProgrammer

+0

Я предполагал обходное решение, касающееся только касания Makefile, но ваш все еще подходит мне. – AProgrammer

0

Это ошибка, которая решена в 3.82, но 3.82 имеет другие ошибки.

Кажется, что у make есть (очень сомнительная, imho) только-4-летняя политика обновления. Я думаю, большинство дистрибутивов Linux будут обновлять свою марку не раньше конца 2014 года

Я прочитал эту blog о отключающей ошибке в 3.82, которая фиксируется в this fork.

Смежные вопросы