0

コマンドラインでスタックサイズを無制限に設定する方法を知っています:

ulimit -s unlimited

また、bash でスタック サイズを無制限に設定すると、コードが正常に実行され、終了します。

makefile で (コンパイラとして g++ を使用して) スタック サイズを無制限 (または特定のサイズ) に設定できますか? もしそうなら、どのように?

注: プロジェクトのソース ファイル (*.cpp、*.h) とメイクファイルのみを送信できます。つまり、(1) makefile が実行され、(2) コードが実行されます。したがって、スクリプトやその他の特別な命令は事前に実行されません。そのため、メイクファイルで変更を行う必要があります...誰かが他の/より良い/素晴らしいアイデアを持っていない限り?

前もって感謝します!

4

2 に答える 2

3

ulimit の使用を避けるためのもう 1 つの素晴らしいアイデア (makefile で別のアプリケーションとして呼び出す (またはスクリプトなどを使用する) など)。これは、ulimit コマンドの機能を独自のプログラム (たとえば、あなたのメイン)。

これを達成するには、man 2 setrlimit (マンページ) を見て、RLIMIT_STACK を見てください。おそらく RLIM_INFINITY に設定する必要があります。

于 2010-02-16T08:55:53.993 に答える
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
于 2010-02-16T08:29:22.830 に答える