2010-02-16 4 views
0

Je sais comment définir la taille de la pile illimitée dans la ligne de commande:Définir la taille de la pile dans un fichier makefile?

ulimit -s unlimited 

Et, en bash, quand je mets la taille de la pile à un nombre illimité, mes courses de code et se termine avec succès. Puis-je définir la taille de la pile à illimité (ou à une taille spécifiée) dans un makefile (avec g ++ comme compilateur)? Si c'est le cas, comment?

Remarque: Je ne peux soumettre que mes fichiers source (* .cpp, * .h) et un fichier makefile pour mon projet. C'est-à-dire que (1) le fichier makefile est exécuté, (2) le code est exécuté. Donc, aucun script, ou d'autres instructions spéciales ne sont exécutées à l'avance, c'est pourquoi les changements doivent être faits dans le makefile ... à moins que quelqu'un ait d'autres/meilleures/brillantes idées?

Merci d'avance!

Répondre

3

Eh bien, une autre idée brillante d'éviter l'utilisation de ulimit (en invoquant comme une application distincte dans votre makefile (ou en utilisant des scripts, etc.). C'est en copiant la fonctionnalité de la commande ulimit en la dupliquant dans votre propre programme (par exemple dans votre propre programme)

Pour ce faire, regardez man 2 setrlimit (manpage), et jetez un oeil à RLIMIT_STACK et vous souhaitez probablement le définir sur RLIM_INFINITY

2

Vous pouvez le faire pour une base par commande:

target: 
    ulimit -s unlimited && foo 

Cela permettra foo à exécuter avec une pile illimitée. Malheureusement, vous devrez ajouter ceci avant chaque commande nécessitant la plus grande pile.

Vous pouvez faire quelque chose de plus général comme celui-ci:

run_%: % 
    ulimit -s unlimited && ./$^ 

# This will try to run a program called "progname" in the current 
# directory with an unlimited stack 
all: run_progname 
Questions connexes