Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

25.08.2005, 21:13

Kompilieren mit DISTCC ich bin am verzweifeln

ich habe 3 Rechner wo ich distcc nutzen möchte

1. Desktop AMD64 @ 2,4 Ghz neustes Ubuntu
2. Laptop P4 @ 2,8 Ghz neustes Ubuntu
3. PII @ 400 Mhz gentoo

nun wollte ich auf dem 3. mal eine gentoo installation wagen stage 1

das hat bisher auch alles prima geklappt nur dauert das kompilieren mir zulange
(fast 1 Tag für x11-xorg) und daher wollte ich distcc einsetzen und meine beiden ubuntu systeme mit einbeziehen

auf den beiden ubuntu systemen ist auch gcc 3.3.2 installiert (also das gleiche wie beim gentoo) und per apt-get install distcc

distcc ist auch auf dem gentoo system

nun hab ich auf jedem rechner eine /etc/distcc/hosts mit den IP Adressen aller 3 rechner angelegt

und auf jedem rechner den distcc daemon mit distccd -- daemon ip1 ip2 ip3 --listen ip1 ip2 ip3 gestartet

in der make-conf auf dem gentoo sytem

MAKEOPTS="-j3"
FEATURES="distcc"

eingetragen

sobald ich jetzt

emerge gnome-light

mach meckert er das auf dem Laptop/Desktop i686-pc-linux-gnu-gcc nicht gefunden wurde

nun es gibt nur ein i484-linux-gcc auf beiden Rechnern also hab ich mir symlinks gemacht

da meckert er glaube das gcc keine input files oder sowas hat

eben testete ich nochmal mit emerge pine
nun kommt

(dcc_writex) ERROR: failed to write: No Route to host
(dcc_writex) ERROR: failed to write: Brocken Pipe
warning: failed to distribute mail.c to ip1 running locally instead


kann mir wer helfen?
gibt irgendwo eine schritt für schritt anleitung zu distcc die auch "anfänger" verstehen?

2

26.08.2005, 00:11

Guten Morgen :) Also ne Schritt für Schritt anleitung Anfängerfreundlich und in Deutsch findest du für Gentoo hier -> http://de.gentoo-wiki.com/Emerge_beschleunigen#Distcc

Wiso machst du denn en Stage1 Installation ? Hast bestimmte Nicht Standartgemäßge Flags ( z.b LDFlags ) in die make.conf gesetzt oder warum?( und das auchnoch auf nem 400MhZ Rechner *lol* Ich brauch ja mit meinem P3 1GhZ dafür schon ne Ewigkeit )
Es gibt bloss eins, was wichtig ist: dass man sterben muss.

Suicide is man's way of telling God, "You can't fire me - I quit."

no one gets out here alive....

3

26.08.2005, 05:02

naja einmal aus interesse und neugier und dann wegen den 0,0001% performancevorteil :D

ich hab ja das system soweit gebaut und konfiguriert das ein x-server läuft aber wollte für den rest verteilt kompilieren da ich ungeduldig bin

wenn das mit distcc irgendwann funktionieren sollte hab ich ja genug rechenpower
notfalls kann ich local noch insgesamt bis ca 10Ghz anbinden und wenns dann immer noch zu langsam is müsst ich wegen Crosscompiling sehen und hätt über inet noch ca. 30xUltraSparc III Cpus mit je 1,5Ghz zur verfügung

den Artikel in der Wiki hab ich mir schon angesehen gehabt
leider ist die Struktur der 2 ubuntu Systeme anders als auf dem gentoo
z.b. gibts kein /etc/conf.d/distccd und kein distccd startskript in /etc/init.d/distccd

also hab ich die distccd config vom gentoo mal in /etc/conf.d/ kopiert

und starte distccd auf dem gentoo mit /etc/init.d/distccd start und auf den ubuntu systemen mit distccd --daemon --allow ip1 ip2 ip3

ich war jetzt soweit das ich in die /etc/distcc/hosts auf dem PII400 login@ip eingetragen hatte, so dass er sich immer per ssh verbindet....

dann scheint er auch was verteilen zu wollen und fordert mich etliche male zur PW eingabe auf und irgendwann kommt dann broken pipe konnte blubb.c nicht verteilen

lass ich den login weg also nur IP in der hosts läuft er ganz normal scheint aber nichts zu verteilen
zumindest zeigt top mir keine compilierungsprozesse auf den beiden anderen systemen an nur auf dem PII400

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Moonblood« (26.08.2005, 05:18)


4

26.08.2005, 05:54

Ich kann deinem Problem grad net ganz folgen ( bin Übermüdet *Lol* )

Aber mal als kleine Anmerkung von mir :

DistCC ist nicht gleich SCHNELL.

Die Rechner die in den Verbund mit eingeschlossen werden sollten ungefähr die gleiche Rechnerpower haben da sich sonst alles Verzögert, den DistCC wartet solange bis alles Kompilliert von den Rechnern zurückgeschickt wird.

Sagen wir mal du hättest einen P100000 UltraTripe50000000000000000000Bera,teramegaherz und einen alten 486DX mit 40Mhz

Dann wartet das DistCC auf deiner Supermaschine solange bis er die sources Fertigkompilliert von der alten Reisschüssel zurückbekommen hat. vorher gehts nicht weiter.

Also Achte darauf das du nur PC´s in deinem Ring hast die Ungefähr die gleichen Specs haben wie du sonst dauerts eher länger weil DistCC auf das Binäre wartet das der Schwächste Rechner in der Ketter erst zurückschicken muss ergo bildet sich ein Stau weil die alte Mühle net Vorranmacht.
Es gibt bloss eins, was wichtig ist: dass man sterben muss.

Suicide is man's way of telling God, "You can't fire me - I quit."

no one gets out here alive....

5

26.08.2005, 10:07

naja dafür ist ja soweit ich es verstanden habe die angabe "-jN" N=Zahl und die Angabe in der /etc/distcc/hosts zuständig

sprich angenommen man hat 3 Rechner einen 486dx -40 einen 3 GHz rechner und einen 1 Ghz rechner

dann gibt man z.b. "-j8" an und in der Hosts

IP3Ghz/6
IP1Ghz/2
IP486DX40/0

an

allerdings fungiert der schwache rechner als verteiler und linker etc... wie könnte man das umgehen und nur auf den beiden anderen kompilieren und von einem der beiden anderen verteilen? es sei nochmal angemerkt das die beiden anderen rechner keine gentoo installation haben

6

26.08.2005, 10:13

Zitat

Original von Moonblood
. wie könnte man das umgehen und nur auf den beiden anderen kompilieren und von einem der beiden anderen verteilen?


Keine Ahnung, mir ist bei DistCC keine Funktion bekannt die das machen würde.

Zitat

es sei nochmal angemerkt das die beiden anderen rechner keine gentoo installation haben


Das ist Wurscht, Gentoo ( oder von mir aus auch ne andere distri ) schickt an die Rechner die das Zeug übersetzen sollen auch die Flags mit WIE die das zu Kompillieren haben. Also kriegst dadurch keinen Performance verlust oder das die Binarys anders wären, so schlau ist DistCC schon :)
Es gibt bloss eins, was wichtig ist: dass man sterben muss.

Suicide is man's way of telling God, "You can't fire me - I quit."

no one gets out here alive....

7

26.08.2005, 11:40

das ist mir soweit bekannt es ging mir darum das ich falls ich das zeugs irgendwie (blos wie eben) nur auf meinem A64 kompilieren (bzw. emergen) könnte und rüberschicken dort kein gentoo drauf hab

8

26.08.2005, 11:50

Zitat

Original von Moonblood
das ist mir soweit bekannt es ging mir darum das ich falls ich das zeugs irgendwie (blos wie eben) nur auf meinem A64 kompilieren (bzw. emergen) könnte und rüberschicken dort kein gentoo drauf hab


Warum ? Gibs keinen DistCC Server für 64Bit Platformen? wäre ja scheisse :(

Weil DistCC Server gibs doch echt für so zimlich jede Plattform.. sogar für Windoof hab ich gelesen *fg*
Es gibt bloss eins, was wichtig ist: dass man sterben muss.

Suicide is man's way of telling God, "You can't fire me - I quit."

no one gets out here alive....

9

26.08.2005, 13:30

Soweit ich weiß, brauchst Du auf den Slavesystemen ja Crosscompiler. Zumindest wenn Du Sparcs einbinden willst, mußt Du auf denen erstmal Compiler erstellen, die x86-Code produzieren.

Und wenn nun Dein P2 daher kommt und i686-Code verlangt, die beiden anderen aber nur i486 Compiler haben, wird es wohl deswegen haken. Ich glaube nicht, daß ein einfacher Symlink da ausreicht.
Ein Blick in /usr/lib/gcc/i686-pc-linux-gnu/3.3.5-20050130/ (bei mir jetzt mal) zeigt ja, daß da nicht nur die Compiler Executables liegen, sondern auch noch 'ne Menge Bibliotheken. Und ich schätze mal, die müssen nicht nur zur Compilerversion (3.3.5) sondern auch zur Zielarchitektur (i686) passen. Und wir wissen ja alle wie pingelig Computer manchmal sein können...

Also entweder baust Du Dir auf den Slaverechnern passende Crosscompiler (Cross ist vielleicht ein wenig hochgegriffen) oder Du setzt auf Deinem P2 die Host Architektur auf i486.

Ist aber alles nur Vermutung. Hab keine Ahnung von dem Thema.
__
Rud

10

26.08.2005, 15:06

der i486 blubb heisst doch nur das der verwendete gcc auf den anderen rechnern nur 486iger optimiert ist..nicht das dieser 486iger code ausspuckt

die sache mit den bibliotheken ist ein argument aber ich glaube das ausschliesslich der PII400 bei distcc linkt und die anderen nur .c -> .o rein kompilieren

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Moonblood« (26.08.2005, 15:07)


11

26.08.2005, 18:55

Zitat

CROSS COMPILING
Cross compilation means building programs to run on a machine with a different processor, architecture, or operating system to where they were compiled. distcc supports cross compilation, including teams of mixed-architecture machines, although some changes to the compilation commands may be required.

The compilation command passed to distcc must be one that will execute properly on every volunteer machine to produce an object file of the appropriate type. If the machines have different processors, then simply using distcc cc will probably not work, because that will normally invoke the volunteer's native compiler.

Machines with the same CPU but different operating systems may not necessarily generate compatible .o files.

Several different gcc configurations can be installed side-by-side on any machine. If you build gcc from source, you should use the --program-suffix configuration options to cause it to be installed with a name that encodes the gcc version and the target platform.

The recommended convention for the gcc name is TARGET-gcc-VERSION such as i686-linux-gcc-3.2 . GCC 3.3 will install itself under this name, in addition to TARGET-gcc and, if it's native, gcc-VERSION and gcc .

The compiler must be installed under the same name on the client and on every volunteer machine.

Aus: http://distcc.samba.org/man/distcc_1.html

i486 ist das Target, was Du meinst ist der Host.

Siehe auch
__
Rud

12

27.08.2005, 12:02

mhh aber warum wird dann immer noch das march=i686 flag übergeben?

13

27.08.2005, 18:49

Du übergibst ja march=Pentium3, AthlonXP,PentiumM...
Das ist die Subarchitektur, wird auch im gcc Handbuch erklärt, undzwar gleich wenn Du auf der Seite, die ich Dir oben gegeben habe auf next klickst.
__
Rud