2013-04-29 151 views
1

如果我目前的環境下,GMAKE更改堆棧大小限制

$ ulimit -s 
10240 

但是,如果我通過使用gmake運行過程中,堆棧大小是無限的。對於實例(;:是讓使用gmake使用shell執行命令,否則它會嘗試找到該名稱的可執行文件)

$ cat Makefile 
default: 
     ulimit -s; : 
$ gmake 
ulimit -s; : 
unlimited 
  • 是有可能得到GMAKE不改變限?

  • 如果沒有,是否有可能重置限制爲我想要的所有規則而不修改它們(雖然我可能會更改主Makefile,一些規則來自生成的包含文件並更改生成邏輯開始帶來自己的問題)。

編輯:@MadScientist瞭解到,這是3.81固定在3.82的問題。但我仍然喜歡周圍的工作。

回答

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 "[email protected]" 

$ chmod 755 stacksh 

然後在你的makefile,重新SHELL使用腳本:

SHELL := /path/to/stacksh 

現在讓將調用你的shell腳本來運行命令,而不是/bin/sh

+0

是的。我仍然喜歡周圍的工作。 – AProgrammer 2013-04-29 13:40:47

+0

我假設一個解決方法只需要觸摸Makefile,但你仍然適合我。 – AProgrammer 2013-04-29 15:07:13

0

這是一個BUG,在3.82中解決,但3.82有其他錯誤。

看來,製造有一個(非常可疑的,恕我直言)只有每4年的更新政策。 我想大多數Linux發行版將更新自己的化妝品沒有遲到過2014年

我讀到這blog約在3.82的斷裂缺陷,這是固定在this fork