2010-07-21 19 views
6

Je construis un énorme projet fréquemment et cela prend beaucoup de temps (plus d'une heure) pour finir même après la configuration des en-têtes précompilés. Y a-t-il des directives ou astuces pour permettre de travailler en parallèle (par exemple en démarrant gcc en arrière-plan, ... etc) pour permettre des constructions plus rapides? Remarque: Les sources et les binaires sont trop volumineux pour être placés dans un système de fichiers RAM et je ne souhaite pas modifier la structure du répertoire ou la philosophie de construction.Speedup GNU make processus de construction - Parallélisme?

Répondre

4

make -jN est un must maintenant que la plupart des machines sont multi-core. Si vous ne voulez pas écrire -jN chaque fois, vous pouvez mettre

export MAKEFLAGS=-jN 

dans votre .bashrc. Vous pouvez également commander distcc.

4

Si votre projet devient trop volumineux pour être traité par une machine, vous pouvez utiliser l'un des remplacements de marques distribués, tels que Electric Cloud.

5

Vous pouvez essayer

make -j<number of jobs to run in parallel> 
0

Si vous voulez exécuter votre construction en parallèle,

make -jN 

fait le travail, mais gardez à l'esprit:

  1. N doit être égale à la maximum number of threads your machine supports, si vous entrez un plus grand nombre que cela, make fait automatiquement N=maximum number of threads your machine supports
  2. make ne prend pas en charge la construction parallèle en utilisant -jN en MSDOS, il fait juste une construction en série. Si vous spécifiez - jN, il sera dégradé N=1.

En savoir plus ici, de la source make: http://cmdlinelinux.blogspot.com/2014/04/parallel-build-using-gnu-make-j.html

+0

MSDOS = Windows et vous avez tort marque parallèle au point 2. – rubenvb

+0

@rubenvb: Oui, je sais. Merci de l'avoir signalé, la source ne mentionne que "MSDOS" et non "windows", je ne sais pas pourquoi j'ai écrit ça, corrigé! – brokenfoot