Traccia: distributed_compiling

Distributed compiling

Sommario:

Come installare il sistema compilatore C/C++ distcc –a distribuito liberamente

DESCRIZIONE:

DA FARE: inserire qui delle parole utili

ALLEGATI:

Il pacchetto distcc, disponibile su: http://distcc.samba.org/ftp/distcc/distcc-2.12.1.tar.bz2 (317,8kB)

PREREQUISITI:

Questo hint si aspetta che si abbiano due sistemi lfs funzionanti con la stessa versione di gcc, binutils e glibc, e una rete funzionante.

HINT:

INDICE

  1. Introduzione
  2. File necessari
  3. Installazione server
  4. Installazione client
  5. Utilizzo
  6. Insidie
  7. Letture consigliate

1. Introduzione

Compilare codice sorgente può richiedere molto tempo. Questo hint descrive come installare distcc, un tool che può essere utilizzato per distribuire la compilazione trasversalmente su molteplici macchine in una rete.
La macchina a cui si sta davanti e da cui parte la compilazione è il client.
Le macchine che svolgono il lavoro sono i server.
Ogni macchina può contenere sia un server che un client.

Questo documento è basato su la documentazione di distcc, scritto da Martin Pool

Tempo stimato di compilazione: 0.20 SBU
Richiesta spazio disco stimato: 5.4 MB

2. File necessari

Il pacchetto distcc, disponibile su: http://distcc.samba.org/ftp/distcc/distcc-2.12.1.tar.bz2 (317,8kB)

3. Installazione

Per installare il pacchetto eseguire i seguenti comandi:

./configure --sysconfdir=/etc &&
make &&
make install

3. Configurazione server

Per rendere eseguibile distcc come server occorre creare un nuovo utente. Assicurarsi che /tmp sia scrivibile da questo utente:

useradd distcc

Per avviare il demone utilizzare il seguente comando:

nice -n 19 distccd --daemon

Per fare in modo che distcc venga eseguito all'avvio utilizzare questo script:

cat > /etc/rc.d/init.d/distcc << "EOF"
#!/bin/bash
source /etc/sysconfig/rc
source $rc_functions
case "$1" in
      start)
              echo "Starting distributed compile daemon"
              nice -n 19 /usr/local/bin/distccd --daemon
              ;;
      stop)
              echo "Stopping distributed compile daemon"
              killproc /usr/local/bin/distccd
              ;;
      *)
              echo "Usage: $0 {start|stop|reload|restart|status}"
              exit 1
              ;;
esac
EOF

chmod 700 /etc/rc.d/init.d/distcc

E creare i seguenti symlink:

cd /etc/rc.d/init.d &&
ln -sf ../init.d/distcc ../rc0.d/K00distcc &&
ln -sf ../init.d/distcc ../rc2.d/S99distcc &&
ln -sf ../init.d/distcc ../rc3.d/S99distcc &&
ln -sf ../init.d/distcc ../rc5.d/S99distcc &&
ln -sf ../init.d/distcc ../rc6.d/K00distcc

4. Configurazione client

Per rendere distcc eseguibile come client eseguire le seguenti istruzioni:

./configure --sysconfdir=/etc &&
make &&
make install

Per far conoscere a distcc chi sono i server editare il file seguente:

mkdir ~/.distcc &&

cat > /root/.distcc/hosts << "EOF"
localhost       #your own machine
192.168.0.201   #the first server,
192.168.0.202   #and the second server
EOF

Assicurarsi che distcc sia rintracciato prima del proprio compilatore reale, creare i symlink:

ln -s /usr/local/bin/distcc /bin/c++ &&
ln -s /usr/local/bin/distcc /bin/cc &&
ln -s /usr/local/bin/distcc /bin/g++ &&
ln -s /usr/local/bin/distcc /bin/gcc

5. Utilizzo

Invece di utilizzare il seguente comando:

./configure && make && make install

Utilizzare questi comandi:

./configure && make -j 6 && make install

Ogni server può gestire tre client per CPU a meno che sia configurato diversamente, così il comando sopra può tenere due server.

6. Insidie

Non utilizzare la versione 1.12. Questa versione contiene un bug che causa l'esecuzione di distccd come utente diverso da distcc. Versioni più vecchie e più recenti dovrebbero funzionare bene.

7. Letture raccomandate

La documentazione inclusa con distcc
I seguenti hint: parallelcompiling.txt

RICONOSCIMENTI:

Il programmatore di questa utilità: Martin Pool mbp@samba.org

L'autore di parallelcompiling.txt Daniel Baumann daniel.baumann@panthera-systems.net

ChangeLog.

9 aprile 2004 Rilascio iniziale

 
distributed_compiling.txt · Ultima modifica: 2015/08/08 14:22 (modifica esterna)