2010-07-21 15 views
6

Construyo un gran proyecto con frecuencia y esto lleva mucho tiempo (más de una hora) para terminar incluso después de configurar los encabezados precompilados. ¿Hay alguna guía o trucos que permitan hacer el trabajo en paralelo (por ejemplo, iniciar gcc en segundo plano, ... etc.) para permitir compilaciones más rápidas?Speedup GNU make build process - Paralelismo?

Nota: Las fuentes y los binarios son de un tamaño demasiado grande para colocarlos en un sistema de archivos RAM y no quiero cambiar la estructura del directorio ni la filosofía de compilación.

Respuesta

4

make -jN es una necesidad ya que la mayoría de las máquinas son multi-núcleo. Si no desea escribir -jN cada vez, puede poner

export MAKEFLAGS=-jN 

en su .bashrc.

Quizás también quieras pagar distcc.

4

Si su proyecto se está volviendo demasiado grande para que lo maneje una máquina, puede usar uno de los reemplazos de fabricación distribuidos, como Electric Cloud.

5

Puede intentar

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

Si desea ejecutar su construcción en paralelo,

make -jN 

hace el trabajo, pero tenga en cuenta:

  1. N debe ser igual a la maximum number of threads your machine supports, si se introduce un número mayor que eso, make hace automáticamente N=maximum number of threads your machine supports
  2. make no es compatible con la compilación paralela usando -jN en MSDOS, solo hace una compilación en serie. Si especifica - jN, se degradará N=1.

leer más aquí, desde la fuente make: http://cmdlinelinux.blogspot.com/2014/04/parallel-build-using-gnu-make-j.html

+0

MSDOS = Windows y estás equivocado acerca de la realización en paralelo en el punto 2. – rubenvb

+0

@rubenvb: Sí, lo sé. Gracias por señalar eso, la fuente solo mencionó 'MSDOS' y no' windows', no sé por qué lo escribí, ¡corregido! – brokenfoot

Cuestiones relacionadas