2011-01-12 15 views
5

Sto tentando di installare un cluster di piccole dimensioni a casa usando distcc. Esistono due sistemi x64 e 1 sistemi i686. Tutti i sistemi utilizzano Ubuntu 10.10 e sono aggiornati. Il sistema che sta iniziando la compilazione è x64. Distcc funziona bene tra i due sistemi x64 ma tutte le attività di compilazione inviate al sistema i686 falliscono.Compilare cross x86_64 su sistema i686 su Ubuntu con distcc

Finora:

  • Ho installato il pacchetto multilib per g ++ su quel sistema. Sono in grado di eseguire il cross-compile su x64 localmente utilizzando g++ -m64
  • Modificato il collegamento in /usr/lib/distcc/g++ in modo che punti a uno script che stabilisca esplicitamente il parametro -m64.

Qualche suggerimento?

+0

Quali sono i sintomi specifici dell'errore? –

+0

I sistemi erano piuttosto generali: la macchina che stava iniziando stava segnalando che la macchina aveva 32 errori e quindi tentava di creare localmente. Ogni volta che è stato creato localmente, ha funzionato, quindi la macchina a 32 bit è stata inserita per un po 'nella "lista nera". –

risposta

5

Cercando questo uno nuovo dopo più ricerca:

GCC ha una page describing the i386 and x86-64 options. Il flag -m64 dice di generare codice a 64 bit, ma si vorrà anche specificare il tipo di CPU con -march=i686 o -march=k8 o simile, per utilizzare il set di istruzioni corretto.

Poiché distcc invia i flag della riga di comando GCC, è necessario provare ad aggiungerli al comando distcc in esecuzione localmente e saltare lo script remoto per l'impostazione dei flag.

Se si verificano i flag di architettura sulla macchina x64 locale senza distcc, solo g ++, quindi dovrebbe fornire i binari corretti quando si utilizza distcc.

+0

Ho usato '-m64' per ottenere build a 64-bit su x86 di recente. –

+0

Arghhh ... così semplice. Per farlo funzionare ho appena impostato (sulla macchina x64 che stava iniziando la compilazione) CFLAGS e CXXFLAGS su -m64. Grazie! –

Problemi correlati