web-dev-qa-db-fra.com

Comment accélérer la compilation d'applications Ubuntu (make, cmake, gcc)

Je compile certains programmes ici et j'ai 4 cœurs. Existe-t-il un moyen de dire à make, cmake ou gcc de compiler en utilisant tous les cœurs ou quelque chose de ce genre qui le concerne?

11
Luis Alvarado

Si un package le prend en charge, vous pouvez utiliser l’indicateur -j pour autoriser l’exécution de tâches parallèles, par exemple:

make -j8

Vous trouverez plus de détails sur ce drapeau dans la question Stackoverflow Pourquoi make -j fonctionne-t-il mieux quand on lui transmet un nombre supérieur au nombre de cœurs disponibles? .

Compilation distribuée

Si vous avez plusieurs machines, essayez distcc a essayer. Sur les machines impliquées, Sudo apt-get install distcc. En supposant que votre machine de compilation soit 192.168.1.1:

  • sur les machines auxiliaires, exécutez:

    Sudo distccd --log-file=/tmp/distccd.log --daemon -a 192.168.1.1
    
  • Sur la machine de construction, avant d'exécuter configure ou cmake, vous devez spécifier les hôtes que vous souhaitez utiliser pour le processus de construction. Spécifiez éventuellement le nombre de travaux simultanés après une barre oblique (4 par défaut):

    export DISTCC_HOSTS='localhost/4 192.168.1.2/8 192.168.1.3/8'
    

    Faites en sorte que le compilateur utilise distcc:

    export PATH="/usr/lib/distcc:$PATH"
    

    Maintenant configure ou cmake l'application et compilez avec:

    make -j$(distcc -j)
    

    Notez que si vous avez mis /usr/lib/distcc deux fois dans votre PATH, cela échouera. Veillez à ne définir /usr/lib/distcc qu'une seule fois dans votre PATH.

Pour plus de détails, voir les pages de manuel de distcc (1) et distccd (1) .

13
Lekensteyn