gmake更改堆栈大小限制

时间:2013-04-29 13:28:25

标签: limit gnu-make

如果我目前的环境,

$ ulimit -s
10240

但是如果我通过gmake运行一个进程,那么堆栈大小是无限的。例如(;:是使gmake使用shell来执行命令,否则它将尝试通过该名称查找可执行文件)

$ cat Makefile
default:
        ulimit -s; :
$ gmake
ulimit -s; :
unlimited
  • 是否可以让gmake不改变限制?

  • 如果没有,是否可以将限制重置为我想要的所有规则而不修改它们(虽然我可以更改主Makefile,但是一些规则来自生成的包含文件并更改生成逻辑开始带来自己的问题。)

编辑:@MadScientist了解到这是3.81的一个问题,在3.82中已修复。但我仍然很感激你的工作。

2 个答案:

答案 0 :(得分:2)

这听起来像在GNU make 3.82中修复https://savannah.gnu.org/bugs/?22010

如果您无法更新您的GNU make版本(3.82就像,现在已超过3年......)并且您无法向后移植补丁,您可以尝试这样的事情(未经测试);创建一个shell脚本来修改堆栈:

$ cat stacksh
#!/bin/sh
ulimit -s ...
exec /bin/sh "$@"

$ chmod 755 stacksh

然后在您的makefile中,重置SHELL以使用您的脚本:

SHELL := /path/to/stacksh

现在make会调用你的shell脚本来运行命令,而不是/bin/sh

答案 1 :(得分:0)

这是一个BUG,在3.82中解决,但3.82还有其他错误。

似乎make有一个(非常有问题的,imho)只有每4年一​​次的更新政策。 我猜大多数Linux发行版都会在2014年底之前更新。

我读了blog关于3.82中的突发错误,该错误已在this fork中修复。