EnglezăFrancezăSpaniolă

Ad


Favicon OnWorks

distcc - Online în cloud

Rulați distcc în furnizorul de găzduire gratuit OnWorks prin Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

Aceasta este comanda distcc care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

PROGRAM:

NUME


distcc - compilator distribuit C/C++/ObjC cu extensii distcc-pump

REZUMAT


distcc [COMPILATOR OPȚIUNI]

distcc [COMPILATOR OPȚIUNI]

[COMPILATOR OPȚIUNI]

distcc [DISTCC OPȚIUNI]

DESCRIERE


distcc distribuie compilarea codului C pe mai multe mașini dintr-o rețea. distcc
ar trebui să genereze întotdeauna aceleași rezultate ca o compilare locală, este simplu de instalat și
folosit și este adesea mult mai rapid decât o compilare locală.

Această versiune încorporează distcc simplu, precum și o îmbunătățire numită modul pompă sau
distcc-pompa.

Pentru fiecare job, distcc în modul simplu trimite codul sursă complet preprocesat și
argumentele compilatorului în rețea de la client la un server de compilare. În pompă
modul, distcc trimite codul sursă și fișierele antet incluse recursiv (excluzând acele
din directoarele de antet de sistem implicite), astfel încât atât preprocesarea cât și compilarea
poate avea loc pe serverele de compilare. Acest lucru accelerează livrarea compilațiilor prin
până la un ordin de mărime peste distcc simplu.

Compilarea este condusă de o mașină client, care este de obicei stația de lucru a dezvoltatorului
sau laptop. Clientul distcc rulează pe această mașină, la fel ca și preprocesorul (dacă
modul pompa distcc nu este utilizat), linkerul și alte etape ale procesului de construire. Orice
numărul de mașini voluntare acționează ca servere de compilare și ajută clientul să construiască
programul, rulând programul distccd(1) daemon, compilator C și asamblator după cum este necesar.

distcc poate rula fie prin socket-uri TCP (pe portul 3632 în mod implicit), fie printr-un tunel
comanda precum ssh(1). Pentru conexiunile TCP, voluntarii trebuie să ruleze distccd(1) demon
fie direct, fie din inetd. Pentru conexiunile SSH trebuie instalat distccd, dar ar trebui
nu ascultați pentru conexiuni.

Conexiunile TCP ar trebui utilizate numai în rețelele securizate, deoarece nu există niciun utilizator
autentificarea sau protecția codului sursă sau obiect. Conexiunile SSH sunt de obicei de 25%
mai lent din cauza supraîncărcării procesorului pentru criptare, deși acest lucru poate varia foarte mult
în funcție de procesoare, rețea și programul construit.

distcc este destinat să fie utilizat cu GNU Make's -j opțiunea, care rulează mai multe compilatoare
procese concomitent. distcc distribuie joburile atât pe CPU-urile locale, cât și pe cele de la distanță.
Deoarece distcc este capabil să distribuie cea mai mare parte a lucrării în rețea, o valoare mai mare
nivelul de concurență poate fi utilizat decât pentru versiunile locale. Ca regulă generală, -j valoare
ar trebui să fie setat la aproximativ dublul numărului total de procesoare server disponibile, dar supuse
limitările clientului. Această setare permite intercalarea maximă a sarcinilor blocate
se așteaptă IO pe disc sau rețea. Rețineți că distcc poate funcționa și cu alte comenzi de construcție
instrumente, cum ar fi SCons, în care setările de concurență similare trebuie ajustate.

-j setare, mai ales pentru valori mari de -j, trebuie să țină cont de sarcina procesorului
clientul. Este posibil să fie necesare măsuri suplimentare pentru a reduce încărcătura clienților. De exemplu,
conexiunea concomitentă ar trebui redusă sever folosind încuietori auxiliare. Efectul
alte activități de compilare, cum ar fi compilarea Java atunci când construiți cod mixt, ar trebui să fie
considerată. The --localslots_cpp parametrul este setat implicit la 16. Acest lucru limitează
numărul de procese concurente care efectuează preprocesare în modul simplu distcc (non-pump).
Prin urmare, mai mare -j valori mai mari de 16 pot fi utilizate fără a supraîncărca un client cu un singur CPU
datorită preprocesării. Valorile atât de mari pot accelera părți ale construcției care nu o fac
implică compilații C, dar pot să nu fie utile pentru a distcc eficiența în modul simplu.

În schimb, folosind modul pompă și să spunem 40 de servere, o setare de -j80 sau mai mare poate fi
adecvat chiar și pentru clienții cu un singur CPU.

Este recomandat să instalați aceeași versiune de compilator pe toate mașinile
participarea la o construcție. Compilatoarele incompatibile pot provoca compilari sau linkuri misterioase
eșecuri.

PORNIRE RAPIDĂ


1 Pentru fiecare mașină, descărcați distcc, despachetați și instalați.

2 Pe fiecare dintre servere, rulați distccd --daemon cu --permite opțiuni de restricționare
acces.

3 Puneți numele serverelor din mediul dvs.:
$ export DISTCC_HOSTS='localhost roșu verde albastru'

4 Construiește!
$ make -j8 CC=distcc

PORNIRE RAPIDĂ PENTRU DISTCC-POMPA MODE


Procedați ca mai sus, dar la Pasul 3, specificați că gazdele de la distanță trebuie să poarte povara
preprocesare și ca fișierele trimise prin rețea să fie comprimate:

$ export DISTCC_HOSTS='--randomize localhost red,cpp,lzo green,cpp,lzo
albastru,cpp,lzo'

--aleatorizare opțiunea impune o utilizare uniformă a serverelor de compilare. În timp ce vei primi
unii beneficiază de modul pump al distcc cu doar câteva servere, veți obține beneficii tot mai mari
cu mai multe procesoare server (până la sute!). Încheiați-vă construcția în comanda pompă,
aici presupunând 10 servere:

$ distcc-pump make -j20 CC=distcc

CUM PLAIN (FĂRĂ POMPĂ) DISTCC FUNCȚIONEAZĂ


distcc rulează doar compilatorul și asamblatorul de la distanță. Cu distcc simplu, the
preprocesorul trebuie să ruleze întotdeauna local, deoarece trebuie să acceseze diverse fișiere de antet
mașina locală care poate să nu fie prezentă sau să nu fie aceeași pe voluntar. The
în mod similar, linkerul trebuie să examineze bibliotecile și fișierele obiect și, prin urmare, trebuie să ruleze local.

Compilatorul și asamblatorul iau doar un singur fișier de intrare (sursa preprocesată) și
produce o singură ieșire (fișierul obiect). distcc livrează aceste două fișiere peste
rețea și, prin urmare, poate rula compilatorul/asamblatorul de la distanță.

Din fericire, pentru majoritatea programelor care rulează preprocesorul este relativ ieftin și
linkerul este numit relativ rar, astfel încât cea mai mare parte a lucrării poate fi distribuită.

distcc își examinează linia de comandă pentru a determina care dintre aceste faze sunt invocate și
dacă locul de muncă poate fi distribuit.

CUM DISTCC-POMPA MODE FUNCȚIONEAZĂ


În modul pompă, distcc rulează și preprocesorul de la distanță. Pentru a face acest lucru, preprocesorul trebuie
au acces la toate fișierele pe care le-ar fi accesat dacă ar fi rulat local. În
modul pump, prin urmare, distcc adună toate anteturile incluse recursiv, cu excepția
cele care sunt antete implicite de sistem și le trimite împreună cu fișierul sursă la
server de compilare.

În modul distcc-pump, serverul despachetează setul tuturor fișierelor sursă într-un mod temporar
director, care conține un arbore de directoare care oglindește partea din sistemul de fișiere care
este relevantă pentru preprocesare, inclusiv pentru legăturile simbolice.

Compilatorul este apoi rulat din calea din directorul temporar care corespunde cu
directorul de lucru curent al clientului. Pentru a găsi și transmite multe sute de fișiere
care fac adesea parte dintr-o singură compilație, modul pump folosește o includere incrementală
algoritm de analiză. Serverul include este un program Python care implementează acest lucru
algoritm. Comanda distcc-pump pornește serverul de includere, astfel încât pe toată durata construcției
poate răspunde întrebărilor include prin comenzi distcc.

Serverul include utilizează analiza statică a limbajului macro pentru a face față condiționalelor
compilare și include calculate. Folosește proprietatea pe care o are atunci când un fișier antet dat
a fost deja analizat pentru include, nu este necesar să faceți acest lucru din nou dacă toate includ
opțiunile (-I) sunt neschimbate (împreună cu alte condiții).

Pentru versiunile mari, fișierele de antet sunt incluse, în medie, de sute de ori fiecare. Cu
modul distcc-pump fiecare astfel de fișier este analizat doar de câteva ori, poate o singură dată, în schimb
de a fi preprocesate de sute de ori. De asemenea, fiecare fișier sursă sau antet este acum
comprimat o singură dată, deoarece serverul include memorează fișierele comprimate. Ca
rezultat, timpul folosit pentru pregătirea compilațiilor poate scădea cu până la un ordin de mărime
peste preprocesarea distcc simplu.

Deoarece distcc în modul pump este capabil să împingă fișiere de până la aproximativ zece ori mai repede, construiți
viteza poate crește de 3 ori sau mai mult pentru versiunile mari în comparație cu modul distcc simplu.

RESTRICȚII PENTRU PUMP MODE


Utilizarea modului pump necesită atât clientul, cât și serverele să utilizeze versiunea 3.0 sau o versiune ulterioară a distcc și
distccd (respectiv).

Analiza de includere incrementală a modului de pompare de disc se bazează pe ipoteza fundamentală
că fișierele sursă și antet nu se modifică în timpul procesului de construire. Câteva construcție complexă
sistemele, cum ar fi cel pentru nucleul Linux 2.6, nu satisfac această cerință. La
depășiți astfel de probleme și alte cazuri de colț, cum ar fi căile absolute ale fișierelor în include, vezi
il include_server(1) pagina de manual.

O altă ipoteză importantă este că trebuie să fie configurația include a tuturor mașinilor
identic. Astfel, anteturile din calea implicită de sistem trebuie să fie aceleași pe toate serverele
si toti clientii. Dacă se folosește o instalare standard a compilatorului GNU, atunci această cerință
se aplică tuturor bibliotecilor ale căror fișiere antet sunt instalate sub / usr / include or
/usr/local/include/. Rețineți că instalarea pachetelor software duce adesea la suplimentare
fișierele antete fiind plasate în subdirectoare ale fiecăreia.

Dacă această ipoteză nu este valabilă, atunci este posibil să spargeți build-urile cu distcc-pump
sau mai rău, pentru a obține rezultate greșite fără avertisment. În prezent, această condiție nu este
verificat și se află pe lista noastră de TODO pentru a rezolva această problemă.

O modalitate ușoară de a garanta că configurațiile incluse sunt identice este utilizarea unui
compilator care definește o cale implicită de căutare a sistemului limitată la directoarele
instalarea compilatorului.

A se vedea include_server(1) manual pentru mai multe informații despre simptomele și cauzele încălcărilor
a ipotezelor modului distcc-pompa.

OPȚIUNE REZUMAT


Majoritatea opțiunilor transmise la distcc sunt interpretate ca opțiuni de compilator. Următoarele opțiuni
sunt înțelese prin distcc în sine. Dacă oricare dintre aceste opțiuni este specificată, distcc nu va fi specificată
invocați compilatorul.

--Ajutor Afișează instrucțiuni rezumate.

--versiune
Afișează versiunea clientului distcc.

--show-hosts
Afișează lista de gazde pe care distcc ar folosi-o. Consultați secțiunea Specificații gazdă.

--scanare-include
Afișează lista fișierelor pe care distcc le-ar trimite către mașina de la distanță, ca
calculat de serverul include. Aceasta este o (supra)aproximare conservatoare a
fișiere care ar fi citite de compilatorul C. Această opțiune funcționează numai în modul pompă.
Consultați secțiunea „Cum funcționează modul Distcc-pump” pentru detalii despre cum se calculează.

Lista rezultată de distcc --scanare-include va conține o intrare pe linie. Fiecare
linia conține o categorie urmată de o cale. Categoria este una dintre FILE, SYMLINK,
DIRECTOR, sau SYSTEMDIR:

FILE indică un fișier sursă sau un fișier antet care ar fi trimis către serverul distcc
gazdă.

SYMLINK indică o legătură simbolică care ar fi trimisă către gazda serverului distcc.

CATALOG indică un director care poate fi necesar pentru a compila sursa
fişier. De exemplu, un director „foo” poate fi necesar din cauza includerii
formularul #include „foo/../bar.h”. Astfel de directoare ar fi create pe distcc
server gazdă.

SYSTEMDIR indică un director include sistem, adică un director care se află pe
calea implicită de includere a compilatorului, cum ar fi "/ usr / include"; astfel de directoare sunt
presupus a fi prezent pe gazda serverului distcc și, prin urmare, nu ar fi trimis la
gazdă server distcc.

-j Afișează nivelul de concurență al distcc, calculat din lista de gazde; este
numărul maxim de joburi restante emise de acest client pentru toate serverele. De
implicit, acesta va fi de patru ori numărul de gazde din lista de gazde, cu excepția cazului în care
Opțiunea /LIMIT a fost folosită în lista de gazde. Consultați secțiunea Specificații gazdă.

INSTALARE DISTCC


Există trei moduri diferite de a apela distcc, pentru a se potrivi diferitelor circumstanțe:

distcc poate fi instalat sub numele compilatorului real, pentru a intercepta apelurile către
și rulați-le de la distanță. Acest compilator „mascat” are cea mai largă compatibilitate
cu arbori sursă existenți și este convenabil atunci când doriți să utilizați distcc pentru toți
compilare. Faptul că distcc este utilizat este transparent pentru fișierele make.

distcc poate fi adăugat la liniile de comandă ale compilatorului, cum ar fi „distcc cc -c hello.c”
sau CC="distcc gcc". Acest lucru este convenabil atunci când doriți să utilizați distcc doar pentru unele
compilații sau pentru a-l încerca, dar poate cauza probleme cu unele fișiere make sau
versiunile de libtool care presupun că $CC nu conține spațiu.

În cele din urmă, distcc poate fi folosit direct ca compilator. „cc” este întotdeauna folosit ca
numele compilatorului real în acest mod „implicit”. Acest lucru poate fi convenabil pentru
utilizarea interactivă atunci când modul „explicit” nu funcționează, dar nu este cu adevărat recomandat
pentru o nouă utilizare.

Amintiți-vă că nu ar trebui să utilizați două metode pentru a apela distcc în același timp. daca tu
folosesc un director masquerade, nu schimbați CC și/sau CXX, doar puneți directorul mai devreme
pe Calea ta. Dacă nu utilizați un director masquerade, va trebui fie să schimbați CC
și/sau CXX, sau modificați fișierele make pentru a apela în mod explicit distcc.

MASCAREA


Ideea de bază este de a crea un „director masquerade” care conține link-uri de la numele lui
compilatorul real la binarul distcc. Acest director este inserat devreme pe PATH, deci
că apelurile către compilator sunt interceptate și distcc este rulat în schimb. distcc apoi se elimină
însuși din PATH pentru a găsi compilatorul real.

De exemplu:

# mkdir /usr/lib/distcc/bin
# cd /usr/lib/distcc/bin
# ln -s ../../../bin/distcc gcc
# ln -s ../../../bin/distcc cc
# ln -s ../../../bin/distcc g++
# ln -s ../../../bin/distcc c++

Apoi, pentru a utiliza distcc, un utilizator trebuie doar să pună directorul /usr/lib/distcc/bin devreme.
PATH și au setat o listă de gazde în DISTCC_HOSTS sau într-un fișier. distcc se va ocupa de
odihnă.

Rețineți că acest director de mascaradă trebuie să apară pe PATH mai devreme decât directorul care
conține compilatoarele reale cu aceleași nume și că orice programe auxiliare care
apelul acestor compilatoare (cum ar fi sau ld) trebuie să se găsească și pe PATH într-un director
după directorul masquerade, deoarece distcc apelează la compilatorul real cu un PATH
valoare care are toate directorul până la și inclusiv directorul masquerade decupat.

Este posibil să obțineți o „eroare de recursivitate” în modul mascarade, ceea ce înseamnă că distcc este
regăsindu-se cumva din nou, nu compilatorul real. Acest lucru poate indica faptul că aveți două
directoarele masquerade pe PATH, posibil din cauza a două instalări distcc în
locații diferite. De asemenea, poate indica faptul că încercați să amestecați „mascarated” și
operațiune „explicită”.

Erorile recursive pot fi evitate folosind scripturi shell în loc de link-uri. De exemplu, în
/usr/lib/distcc/bin creează un fișier cc care conține:

#!/ Bin / sh
distcc /usr/bin/gcc „$@”

În acest fel, nu depindem de faptul că distcc trebuie să localizeze gcc-ul real prin investigare
variabila PATH. În schimb, locația compilatorului este furnizată în mod explicit.

UTILIZAREA DISTCC CU CCACHE


ccache este un program care accelerează construirea software-ului prin memorarea în cache a rezultatelor compilațiilor.
ccache este de obicei apelat înainte de distcc, astfel încât rezultatele să fie preluate dintr-un normal
cache. Poate fi necesară o anumită experimentare pentru realizarea de fișiere makefile idiosincratice
totul lucrează împreună.

Cea mai fiabilă metodă este setarea

CCACHE_PREFIX="distcc"

Acest lucru îi spune ccache să ruleze distcc ca un wrapper în jurul compilatorului real. ccache încă mai folosește
compilatorul real pentru a detecta upgrade-urile compilatorului.

ccache poate fi apoi rulat folosind fie un director masquerade or prin setare

CC="ccache gcc"

Începând cu versiunea 2.2, ccache nu pune în cache compilarea din sursa preprocesată și așa va face
nu primiți niciodată o lovitură de cache dacă este rulat de la distccd sau distcc. Trebuie să fie rulat numai pe
partea clientului și înainte de distcc pentru a fi de orice folos.

Modul pump al lui distcc nu este compatibil cu ccache.

HOST SPECIFICAȚII


O „listă de gazde” spune distcc ce mașini să folosească pentru compilare. În ordine, distcc arată
în $DISTCC_HOSTS variabila de mediu, a utilizatorului $DISTCC_DIR/gazde dosarul, iar
fișier gazdă la nivelul întregului sistem. Dacă nu poate fi găsită nicio listă de gazde, distcc emite un avertisment și se compilează
la nivel local.

Lista de gazde este o listă simplă, separată de spații albe, de specificații de gazdă. Cel mai simplu
și cea mai comună formă este un nume de gazdă, cum ar fi

localhost roșu verde albastru

distcc preferă gazde la începutul listei, așa că mașinile ar trebui să fie listate în
ordinea descrescătoare a vitezei. În special, când poate fi rulată doar o singură compilație (cum ar fi
ca dintr-un script de configurare), este folosită prima mașină listată (dar vezi --aleatorizare de mai jos).

plasare localhost la punctul potrivit din listă este important pentru a obține o performanță bună.
Deoarece supraîncărcarea pentru rularea joburilor la nivel local este mică, localhost ar trebui să fie în mod normal primul.
Cu toate acestea, este important ca clientul să aibă suficiente cicluri libere pentru a rula joburile locale și
clientul distcc. Dacă clientul este mai lent decât voluntarii, sau dacă sunt mulți
voluntari, atunci clientul ar trebui trecut mai târziu în listă sau deloc. Ca general
regula, dacă viteza agregată a CPU a clientului este mai mică de o cincime din total, atunci
clientul ar trebui să fie exclus din listă.

Dacă aveți un cluster de compilare partajat mare și un singur fișier gazdă partajat, regulile de mai sus
ar face ca primele mașini din fișierul hosts să fie încercate mai întâi, chiar dacă acestea
probabil că vor fi mai ocupate decât mașinile mai târziu în listă. Pentru a evita acest lucru, plasați cuvântul cheie
--aleatorizare în lista de gazde. Acest lucru va face ca lista de gazde să fie randomizată, ceea ce
ar trebui să îmbunătățească ușor performanța pentru clusterele mari de construcție.

Există două nume de gazdă speciale --localslots și --localslots_cpp care sunt utile pentru
reglarea sarcinii pe mașina locală. The --localslots gazdă specifică câte locuri de muncă
nu poate fi rulat de la distanță care poate fi rulat simultan pe mașina locală, în timp ce
--localslots_cpp controlează câte preprocesoare vor rula în paralel pe local
mașinărie. Reglarea acestor valori poate îmbunătăți performanța. Conectarea pe proiecte mari poate dura
cantități mari de memorie. Rularea de linkere paralele, care nu pot fi executate de la distanță,
poate forța mașina să schimbe, ceea ce reduce performanța decât doar rularea lucrărilor
secvență fără schimbare. Obținerea corectă a numărului de preprocesoare paralele
vă permite să utilizați factori paraleli mai mari cu make, deoarece mașina locală are acum câțiva
mecanism de măsurare a utilizării resurselor locale.

În cele din urmă există intrarea gazdă

Performanța depinde de detaliile sursei și makefiles utilizate pentru proiect și
mașina și vitezele rețelei. Experimentarea cu diferite setări pentru lista de gazde
și -j factorul poate îmbunătăți performanța.

Sintaxa este

DISTCC_HOSTS = HOSTSPEC...
HOSTSPEC = LOCAL_HOST | SSH_HOST | TCP_HOST | OLDSTYLE_TCP_HOST
| GLOBAL_OPTION
| ZEROCONF
LOCAL_HOST = gazdă locală[/LIMIT]
| --localslots=
| --localslots_cpp=
SSH_HOST = [USER]@HOSTID[/LIMIT][:COMMAND][OPTIONS]
TCP_HOST = HOSTID[:PORT][/LIMIT][OPTIONS]
OLDSTYLE_TCP_HOST = HOSTID[/LIMIT][:PORT][OPTIONS]
HOSTID = HOSTNAME | IPV4 | IPV6
OPȚIUNI = ,OPȚIUNE[OPȚIUNI]
OPTIUNE = lzo | cpp
GLOBAL_OPTION = --randomize
ZEROCONF = +zeroconf

Iată câteva exemple individuale de sintaxă:

localhost
Cuvântul literal „localhost” este interpretat special pentru a face compilații
executat direct, în loc să fie transmis unui demon de pe mașina locală. Dacă faci
doriți să vă conectați la un demon de pe mașina locală pentru testare, apoi dați
adresa IP a mașinii sau numele de gazdă real. (Acest lucru va fi mai lent.)

IPV6 O adresă IPv6 literală cuprinsă între paranteze drepte, cum ar fi [::1]

IPV4 O adresă IPv4 literală, cum ar fi 10.0.0.1

NOMUL DE GĂȘTARE
Un nume de gazdă care trebuie căutat folosind soluția.

:PORT Conectați-vă la un număr de port zecimal specificat, în loc de 3632 implicit.

@HOSTID
Conectați-vă la gazdă prin SSH, nu prin TCP. Opțiunile pentru conexiunea SSH pot
fi instalat ~ / .Ssh / config

UTILIZATOR@ Conectați-vă la gazdă prin SSH ca un nume de utilizator specificat.

:COMANDA
Conectați-vă prin SSH și utilizați o cale specificată pentru a găsi serverul distccd. Aceasta este
în mod normal, este necesar doar dacă din anumite motive nu puteți instala distccd într-un director
pe calea implicită pentru conexiunile SSH. Folosiți asta dacă primiți erori precum „distccd:
comanda nu a fost găsită" în modul SSH.

/LIMITĂ O limită zecimală poate fi adăugată la orice specificație de gazdă pentru a restricționa numărul de
joburi pe care acest client le va trimite mașinii. Limita este implicită la patru per
host (două pentru localhost), dar poate fi restricționat și mai mult de server. Ar trebui
trebuie doar să măriți acest lucru pentru serverele cu mai mult de două procesoare.

,lzo Activează compresia LZO pentru această gazdă TCP sau SSH.

,cpp Activează modul distcc-pump pentru această gazdă. Notă: comanda de compilare trebuie să fie inclusă
scriptul distcc-pump pentru a porni serverul include.

--aleatorizare
Randomizați ordinea listei de gazde înainte de execuție.

+zeroconf
Acest opțiune is afară disponibil if distcc a fost compilat cu avahi a sustine activat at
configura timp. Când această intrare specială este prezentă în lista gazdelor, distcc va fi
utilizați Avahi Zeroconf DNS Service Discovery (DNS-SD) pentru a localiza orice distccd disponibil
servere din rețeaua locală. Acest lucru evită necesitatea de a lista în mod explicit gazda
numele sau adresele IP ale mașinilor serverului distcc. Serverele distccd trebuie să aibă
a fost pornit cu opțiunea „--zeroconf” pentru a distccd. Un avertisment important este că
în implementarea curentă, modul pompă ("cpp") și compresia ("lzo") vor
nu va fi folosit niciodată pentru gazdele localizate prin zeroconf.

Iată un exemplu care demonstrează câteva posibilități:

localhost/2 @bigman/16:/opt/bin/distccd mașină veche: 4200/1
# căruțaș is jos
distant/3,lzo

Comentariile sunt permise în specificațiile gazdei. Comentariile încep cu un semn hash/lire sterline (#)
și aleargă până la capătul liniei.

Dacă o gazdă din listă nu este accesibilă, distcc va emite un avertisment și va ignora gazda respectivă pentru
cam un minut.

COMPRIMARE


lzo opțiunea gazdă specifică că compresia LZO trebuie utilizată pentru transferul de date,
inclusiv sursă preprocesată, cod obiect și mesaje de eroare. Compresia este de obicei
economic în rețelele mai lente de 100 Mbps, dar rezultatele pot varia în funcție de rețea,
procesoare și arborele sursă.

Activarea compresiei face ca clientul și serverul distcc să utilizeze mai mult timp CPU, dar mai puțin
trafic de rețea. Timpul CPU adăugat este nesemnificativ pentru modul pompă. Compresia
raportul este de obicei 4:1 pentru sursă și 2:1 pentru codul obiect.

Utilizarea compresiei necesită atât clientul, cât și serverul să utilizeze cel puțin versiunea 2.9 a distcc.
Nu este necesară configurarea serverului: serverul răspunde întotdeauna cu răspunsuri comprimate la
cereri comprimate.

Modul Pump necesită ca serverele să aibă opțiunea de gazdă lzo activată.

Căutare CALĂRI


Dacă numele compilatorului este o cale absolută, acesta este transmis literal serverului și
compilatorul este rulat din acel director. De exemplu:

distcc /usr/local/bin/gcc-3.1415 -c buna

Dacă numele compilatorului nu este absolut sau nu este complet calificat, se caută PATH-ul distccd.
Când distcc este rulat dintr-un director masquerade, este doar numele de bază al compilatorului
folosit. PATH-ul clientului este folosit doar pentru a rula preprocesorul și nu are niciun efect asupra
calea serverului.

TIME-OUT


Atât clientul distcc, cât și serverul impun intervale de timp pentru transferul de date în rețea.
Acesta este menit să detecteze gazdele care nu sunt accesibile sau inaccesibile și să prevină compilarea
se suspendă pe termen nelimitat dacă un server este deconectat în timpul utilizării. Dacă un timeout din partea clientului
expiră, lucrarea va fi reluată local.

Timeout-urile nu sunt configurabile în prezent.

DIAGNOSTIC


Mesajele de eroare sau avertismentele de la compilatoare locale sau la distanță sunt transmise pentru diagnosticare
ieșire pe client.

distcc poate furniza informații extinse de depanare atunci când este utilizată opțiunea verbose. Acest
este controlat de DISTCC_VERBOSE variabila de mediu pe client și --verbos
opțiunea de pe server. Pentru depanare, examinați atât eroarea clientului, cât și eroarea serverului
mesaje.

EXIT CODURI


Codul de ieșire al distcc este în mod normal cel al compilatorului: zero pentru compilare reușită
și diferit de zero în caz contrar.

distcc face distincția între erorile „autentice”, cum ar fi o eroare de sintaxă în sursă și
erori „accidentale”, cum ar fi o problemă de conectare la rețea la un voluntar. În cazul
de erori accidentale, distcc va reîncerca compilarea local, cu excepția cazului în care DISTCC_FALLBACK
opțiunea a fost dezactivată.

Dacă compilatorul iese cu un semnal, distcc returnează un cod de ieșire de 128 plus semnalul
număr.

erorile interne distcc provoacă un cod de ieșire între 100 și 127. În special

100 Eroare generală distcc.

101 de argumente proaste.

102 Legarea a eșuat.

103 Conectarea a eșuat.

104 Compilatorul sa blocat.

105 De memorie.

106 SPEC. gazdă greșită

107 Eroare I/O

108 Trunchiat.

109 Eroare de protocol.

110 Compilatorul dat nu a fost găsit pe gazda la distanță. Verificați dacă $CC este setat
adecvat și că este instalat într-un director pe calea de căutare pentru
distccd.

111 Apel recursiv la distcc.

112 Nu s-au renunțat la privilegii.

113 Acces la rețea refuzat.

114 În utilizare de către un alt proces.

115 Nu există un astfel de dosar.

116 Nu au fost definite gazde și alternativele dezactivate.

118 Timeout.

Utilizați distcc online folosind serviciile onworks.net


Servere și stații de lucru gratuite

Descărcați aplicații Windows și Linux

  • 1
    Firebird
    Firebird
    Firebird RDBMS oferă caracteristici ANSI SQL
    și rulează pe Linux, Windows și
    mai multe platforme Unix. Caracteristici
    concurență și performanță excelente
    & putere...
    Descărcați Firebird
  • 2
    KompoZer
    KompoZer
    KompoZer este un editor HTML wysiwyg care utilizează
    baza de cod Mozilla Composer. La fel de
    Dezvoltarea Nvu a fost oprită
    în 2005, KompoZer remediază multe erori și
    adaugă un f...
    Descărcați KompoZer
  • 3
    Descărcător gratuit de manga
    Descărcător gratuit de manga
    Free Manga Downloader (FMD) este un
    aplicație open source scrisă în
    Object-Pascal pentru gestionarea și
    descărcarea manga de pe diverse site-uri web.
    Aceasta este o oglindă...
    Descărcați gratuit Manga Downloader
  • 4
    UNetbootin
    UNetbootin
    UNetbootin vă permite să creați bootable
    Unități USB live pentru Ubuntu, Fedora și
    alte distribuții Linux fără
    arderea unui CD. Se rulează pe Windows, Linux,
    şi ...
    Descărcați UNetbootin
  • 5
    Dolibarr ERP - CRM
    Dolibarr ERP - CRM
    Dolibarr ERP - CRM este ușor de utilizat
    Pachetul software ERP și CRM open source
    (rulați cu un server web php sau ca
    software autonom) pentru companii,
    fundatii...
    Descărcați Dolibarr ERP - CRM
  • 6
    Client SQL SQuirreL
    Client SQL SQuirreL
    SQuirreL SQL Client este un SQL grafic
    client scris în Java care va permite
    pentru a vizualiza structura unui JDBC
    baza de date conformă, răsfoiți datele în
    Mese...
    Descărcați SQuirreL SQL Client
  • Mai mult »

Comenzi Linux

Ad