PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Compilieren über Netzwerk



Shadowxy1
15.06.05, 09:06
Hallo Zusammen,

ich habe mehrere SUSE 8.2 Rechner zur verfügung, mit dem ich gerne große Projekte Compilieren möchte und am besten ginge diese über Netzwerk, in dem ich die einzelnen aufträge Verteile. Dazu bräuchte ich paar Informationen oder Tools die diese Verteilung automatisch machen.

Vielen Dank im Voraus

Mfg Mark

Diozaka
15.06.05, 10:10
Ich denke, distcc (http://distcc.samba.org/) könnte für dich interessant sein.

MfG, Diozaka

Shadowxy1
15.06.05, 10:26
Dieses distcc hab ich ja benutzt, Problem beim qt übersetzten hat es nicht viel zeitersparnis gebracht und bei anderen übersetzungen teilt er erst garnicht auf, nun die frage ist das normal oder gibs da einstellungen die man beachten muss?? ich habe die hosts angegeben und make -j4 CC=distcc aber er hat nicht zu den anderen rechnern gesendet und bei qt nur minimalst.

Diozaka
15.06.05, 10:37
Die Verteilung hängt natürlich immer davon ab, wie sehr die einzelnen Quellcode-Dateien voneinander abhängen, d.h. wenn in einem Projekt nicht viele voneinander unabhängige Programmeinheiten vorkommen, dann kann die Arbeit auch nicht gut aufgeteilt werden.


The -j value should normally be set to about twice the total number of available CPUs, to allow for some tasks being blocked waiting for disk or network IO.
make -j 4Man sollte also für -j eine Zahl angeben, die mindestens doppelt so groß ist, wie die Anzahl der Prozessoren. Stimmt das in dem Fall?

MfG, Diozaka

Mr_Maniac
15.06.05, 10:43
Übrigens wird das nicht "make -j4 CC=distcc" gestartet, sondern

CC="distcc" make -j4
CC ist nämlich eine Umgebungsvariable..
Man kann distcc aber auch einbinden, indem man den Ort der distcc-binarys in "PATH" aufnimmt:

export PATH="/usr/lib/distcc/bin:${PATH}"
Dann klappt das auch mit dem kompilieren.

Shadowxy1
16.06.05, 07:19
Die Lösung war:

make -j4 CC="distcc gcc" CXX="distcc g++"

Shadowxy1
17.06.05, 07:45
Hallo naochmal,

Distcc ist so wie ich das sehe ja nur für C/C++ gibt es sowas auch für Java?

BedriddenTech
17.06.05, 09:42
Ich glaube, für ANT gibt es da ein so ein Plugin, aber das habe ich mal nur am Rande wahrgenommen. Oder meinst du den GCJ?

Shadowxy1
20.06.05, 08:42
Was meinst du mit ANT oder GCJ?

HirschHeisseIch
20.06.05, 11:13
Oder Du verwendest einfach die Holzhammer-Methode und setzt ein Cluster auf.
Ist natürlich etwas stressig, weil du auf jedem Rechner nen neuen Kernel installieren musst.
http://openmosix.sourceforge.net/

Hirogen2
20.06.05, 12:34
Übrigens wird das nicht "make -j4 CC=distcc" gestartet, sondern

CC="distcc" make -j4
CC ist nämlich eine Umgebungsvariable..

Das ist total egal. Im Makefile kann $(MEINVARIABLE) bzw. ${MEINEVARIABLE} entweder ein make-Parameter oder eine Shell-Variable referenzieren. Es kommt also aufs gleiche raus, ob du CC=distcc make eingibst oder make CC=distcc. Probier es doch mal mit diesem schönen Makefile:


13:31 eax:~ > cat Makefile
all:
echo CC ist ${CC}
13:31 eax:~ > make CC=distcc
echo CC ist distcc
CC ist distcc
13:31 eax:~ > CC=distcc make
echo CC ist distcc
CC ist distcc
13:31 eax:~ > make
echo CC ist cc
CC ist cc

Also alles perfekt.