bootstrap und distcc

Greenpeace

Fleet Captain Special
Mitglied seit
22.10.2002
Beiträge
328
Renomée
0
Hi, ich wollte gerade auf meinem Athlon 64 Gentoo aufspielen.
Zur zeitersparnis soll mein AthlonXP (Debian, Sarge) per distcc mithelfen.
Soweit so gut, distcc funktioniert auch nur bricht das kompilieren ab und gibt mir eine Fehlermeldung das der host 192.168.0.1 (athlon xp) kein gnu-linux-64 (oder so ähnlich) ist.

Der Fehler ist eig. klar wie Klosbrühe. Da die Architekturen unterschiedlich sind breuchte ich einen Cross-kompiler, nur wie mach ich das? Aus der Anleitung von Gentoo werde ich nicht schlau!!!

Also kann mir das einer erklären oder hat einer ein howto?

THX im Voraus
 
Mittlerweile habe ich eine Vorstellung von dem was ich machen will.

binutils wurden mit:

./configure --target=x86_64-unknown-linux \
--prefix=/opt/amd64

installiert.

Bei gcc:
./configure
--target=x86_64-unknown-linux \
--prefix=/opt/amd64 --enable-languages=c --disable-shared \
--disable-multilib --enable-threads=single

kommt follgender Fehler :
/tmp/ccyKJkOb.s: Assembler messages:
/tmp/ccyKJkOb.s:36: Error: `completed.1(%rip)' is not a valid 32 bit base/index expression
/tmp/ccyKJkOb.s:37: Error: suffix or operands invalid for `push'
/tmp/ccyKJkOb.s:38: Error: suffix or operands invalid for `movq'
/tmp/ccyKJkOb.s:44: Error: `p.0(%rip)' is not a valid 32 bit base/index expression
/tmp/ccyKJkOb.s:47: Error: `p.0(%rip)' is not a valid 32 bit base/index expression
/tmp/ccyKJkOb.s:48: Error: `(%rax)' is not a valid 32 bit base/index expression
/tmp/ccyKJkOb.s:57: Error: `completed.1(%rip)' is not a valid 32 bit base/index expression
/tmp/ccyKJkOb.s:71: Error: suffix or operands invalid for `push'
/tmp/ccyKJkOb.s:74: Error: suffix or operands invalid for `movq'
/tmp/ccyKJkOb.s:80: Error: `__JCR_LIST__(%rip)' is not a valid 32 bit base/index expression
make[1]: *** [crtbegin.o] Fehler 1
make[1]: Leaving directory `/root/gcc-3.4.2/gcc'
make: *** [all-gcc] Fehler 2
 
Was du vor hast, geht nicht. Dafür benötigst du ein multilib/multiarch-System auf Basis x86, und das wird nicht angeboten. Selbst wenn du gcc und binutils als multiarch baust, kannst du damit nicht dein System übersetzen, weil dir die gesamten libs fehlen. Du würdest angefangen bei der glibc über ncurses und openssl bis hin perl und python den ganzen Spaß für x86_64 benötigen, und das ist gerade mal das Basissystem.
Kurz gesagt, vergiss diese Vorhaben, das funktioniert nicht. Andersherum ist das möglich, weil es x86_64 als multilib/multiarch gibt, und damit die Unterstützung für x86 vorhanden ist.
 
heißt das dan auch das ich zum emergen meines amd64 Systems kein distcc benutzen kann?

Oder gibt es da andere Möglichkeiten?
 
Zwei Sachen:

1.) Ich weiß jetzt nicht wie distcc funktioniert, ob der wirklich nur compiliert oder ob der auch linkt. Ist ersteres der Fall, benötigst du die ganzen libs nicht, dann reichen gcc und binutils, die in der Lage sind, für x86_64 Code zu erstellen.

2.) Du müßtest distcc immer noch mitteilen, dass der entfernte Rechner in der Lage ist, den von dir gewünschten Code zu erstellen. Ich habe nicht wirklich Ahnung, wie das zu bewerkstelligen ist. In der Zeit, die du jetzt aber dafür aufwendest, herauszufinden, wie du einen multiarch gcc baust und das dann distcc verklickerst, hast du dein System schon zum größten Teil installiert. Du kannst ccache zur Installation dazu nehmen, was die vor allem bei großen Paketen wie KDE helfen sollte.

Solltest du trotzdem versuchen wollen, distcc zu nutzen, könnte folgende Anleitung hilfreich sein:
http://www.gentoo.de/doc/de/distcc.xml
 
was du brauchst sind 2 gleiche gcc compiler aber das schreibt ja der autor
hier http://www.gentoo.de/doc/de/distcc.xml , bei mir funzt das wunderbar solang man eben die gleichen compiler und bindutils verwendet .... (und das cross compile howto beachtet)

moment da war noch was, ich glaube gentoo macht dir da nen strich durch die rechnung
ich hab mal auf distcc knoppix gelesen dass die compiler von gentoo nicht mit dem rest der welt kompatibel sind ....
 
Zuletzt bearbeitet:
Zurück
Oben Unten