Come installo distcc?


10

Ho letto Come creare una toolchain GCC 4.7 per la compilazione incrociata? e ho creato con successo un semplice programma di test che funziona sul mio RPi.

Per fare questo, ho dovuto eseguire arm-unknown-linux-gnueabi-gcc hello.c -o hellosul mio desktop x86 e scpl'eseguibile sul mio RPi. Questo è lento e una seccatura. Preferirei controllare la compilation dal mio RPi.

Ho letto distcc, che può essere usato per distribuire la compilation da una macchina all'altra.

Come lo installo? Ho entrambi i desktop Debian / Ubuntu e Arch Linux ed entrambi i sistemi operativi installati su schede SD.


Ho aspettato qualcuno che non sono io per pubblicare questa domanda. Non volevo davvero farlo. Bel lavoro.
Jivings,

export DISTCC_VERBOSE=1Grazie per questo ! È quello che sto cercando di preparare il mio distcc toolchain

Risposte:


12

Queste istruzioni presuppongono che sullo slave sia presente un compilatore incrociato funzionante. Leggi come creare una toolchain GCC 4.7 per la compilazione incrociata? se non l'hai fatto. È anche utile averlo makeinstallato sul master.

Installazione

Innanzitutto, dobbiamo installare distcc. Useremo i pacchetti predefiniti forniti dai sistemi di gestione dei pacchetti dei sistemi operativi, ma se lo desideri sei libero di installare dal sorgente!

Debian

sudo apt-get install distcc

Arco

sudo pacman -S distcc

Configurazione

Slave - Debian / Ubuntu

TODO: È lo stesso per Arch? In caso contrario, come configuriamo Arch?

Dobbiamo regolare le impostazioni in /etc/default/distcc. Nel tuo editor preferito, aprilo come root; Ho corso sudo vim /etc/default/distcc.

Devi cambiare STARTDISTCC, ALLOWEDNETSe LISTENER. Supponendo che il tuo master e lo slave siano sulla stessa sottorete e che la sottorete sia 192.168.0.0/24, dovrebbero essere impostati su

STARTDISTCC="true"
ALLOWEDNETS="192.168.0.0/24"
LISTENER="0.0.0.0"

Inoltre, dovresti aggiungere il percorso al tuo compilatore. L'ho fatto aggiungendo la seguente riga

PATH=$PATH:/home/alex/x-tools/arm-unknown-linux-gnueabi/bin

Nota Il demone sullo slave verrà eseguito come distccdutente, quindi assicurarsi che siano configurate le autorizzazioni appropriate sui file eseguibili; Ho dato a tutti il ​​permesso di eseguire.

Esegui il demone - normalmente sarebbe avviato all'avvio - eseguendo

sudo service distcc start

Maestro - Arch

TODO: È lo stesso per Debian? In caso contrario, come configuriamo Debian?

Apri ~/.distcc/hostsnel tuo editor di testo preferito e aggiungi l'indirizzo IP degli Slave. Il mio hostsfile consisteva in una sola riga, che leggeva 192.168.0.22.

Nota Potrebbe essere una buona idea assegnare un indirizzo IP statico al tuo slave, altrimenti dovrai cambiare questo file ogni volta che cambia l'indirizzo IP.

Uso

Tutto sta andando bene, dovresti essere in grado di usare distcc semplicemente. Ad esempio, per compilare hello.ca hello.o, corsa

distcc arm-unknown-linux-gnueabi-gcc    -c -o hello.o hello.c

Esempio: Hello World!

Ho creato un semplice esempio nella mia directory home, che consisteva in 2 file.

# file: Makefile
hello.o: hello.c
hello: hello.o

# file: hello.c
#include <stdio.h>

int main() {
  printf("Hello World!\n");
  return 0;
}

L'esecuzione make helloverrà compilata localmente; dovresti farlo prima come test rapido. Dai, aspetterò.

Running make hello CC="distcc arm-unknown-linux-gnueabi-gcc"eseguirà una compilation distribuita.

Nota La preelaborazione e il collegamento avvengono ancora sull'RPi.

Debug

Mi ci è voluto un po 'per farlo funzionare correttamente e il miglior strumento di debug che ho trovato era una semplice variabile d'ambiente. Se tu

export DISTCC_VERBOSE=1

il distccclient produrrà un sacco di informazioni utili.

Questo è un post lungo, quindi ogni feedback sarebbe ricevuto con gratitudine. Spero di aver ricordato tutti i passaggi!


Risposta eccellente. Lo aggiungerò ai segnalibri per lo sviluppo del mio RPi.
Jivings,

@AlexChamberlain Distcc ora supporta la "modalità pompa" che consente di distribuire anche la preelaborazione.
Teraquendya,

@teraquendya Lo fanno davvero, non ho ancora avuto modo di pubblicare dettagli su questo. Voglio essere sicuro di aver prima tutto a posto senza la modalità pompa.
Alex Chamberlain,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.