在makefile中设置堆栈大小?

时间:2010-02-16 08:25:54

标签: makefile g++ stack-size

我知道如何在命令行中将堆栈大小设置为无限制:

ulimit -s unlimited

而且,在bash中,当我将堆栈大小设置为无限制时,我的代码会成功运行并终止。

我可以在makefile中将堆栈大小设置为无限(或某些指定大小)(使用g ++作为编译器)吗?如果是这样,怎么样?

注意:我只能为我的项目提交源文件(* .cpp,* .h)和makefile。也就是说,(1)运行makefile,(2)运行代码。因此,事先没有执行脚本或其他特殊指令,这就是为什么必须在makefile中进行更改...除非有人有其他/更好/更好的想法?

提前致谢!

2 个答案:

答案 0 :(得分:3)

嗯,另一个很好的想法是避免使用ulimit(在makefile中调用它作为一个单独的应用程序(或者使用脚本等)。这是通过在你自己的程序中复制ulimit命令的功能来复制它(例如,在你的主要)。

为了实现这一目标,请查看man 2 setrlimit(manpage),并查看RLIMIT_STACK 你可能想把它设置为RLIM_INFINITY

答案 1 :(得分: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