# [RISOLTO] Cross toolchain: perchè ricompilare?

## Moris_Co

Ciao a tutti.

Seguendo la guida "Manuale Gentoo Embedded" sto cercando di compilare del software per architettura ARM utilizzando un calcolatore x86.

Sono agli inizi e ci sono alcne cose che mi sfuggono.

Nella guida si parla di ricompilare nell'ordine: binutils, gcc, glibc utilizzando tra l'altro lo stesso gcc (a voi non vi gasa questa  cosa?   :Very Happy:  ).

Quando compilo le binutils devo specificare l'architettura sia del target che dell'host, compilando in questo modo un eseguibile per il target usando il gcc che ho installato sull'host.

Subito dopo devo compilare una versione di dootstrap di gcc per abilitare il supporto ad ARM ma, dato che ho già compilato le binutils usando il gcc standard, significa che gcc ha già le capacità per compilare per ARM, perchè ricompilare allora?

Mi sfugge qualche particolare o faccio un po di confusione, per favore, qualcuno può spiegarmi meglio?Last edited by Moris_Co on Wed Jun 10, 2009 8:09 pm; edited 1 time in total

----------

## Ic3M4n

anche io stavo giochicchiando un po' con il crossdev, soprattutto per architettura arm, la cosa migliore che tu possa fare è installarti crossdev e far fare tutto a lui. 

questa guida è specifica per l'openmoko però magari puoi prendere spunto anche da questa.

http://gentoo.mindzoo.de/index.cgi/wiki/cross-compiling

----------

## oRDeX

Io penso che le binutils non siano state compilate in codice macchina ARM, ma che siano state create delle binutils capaci di giostrare file binari per ARM.

----------

## Moris_Co

@Ic3M4n: grazie per il tuo interessante link. Non appena capisco come si costruisce una cross toolchain utilizzerò il metodo automatico per farlo  :Very Happy: .

Dato che ci hai già giocherellato vorrei farti una domanda ed uscire un tantino fuori topic: volevo sapere come fa crossdev a scegliere le versioni di gcc e libc sicuramente compilabili tra di loro, grazie.

@oRDeX: penso che tu abbia colto nel segno, sto iniziando a capire: quindi, quando io compilo le binutils e il gcc, non sto compilando per ARM, sto semplicemente attivando il supporto a questa architettura che nel gcc e binutils installate nel sistema non c'è, giusto?

Fantastico questo forum, grazie

----------

## oRDeX

 *Moris_Co wrote:*   

> @oRDeX: penso che tu abbia colto nel segno, sto iniziando a capire: quindi, quando io compilo le binutils e il gcc, non sto compilando per ARM, sto semplicemente attivando il supporto a questa architettura che nel gcc e binutils installate nel sistema non c'è, giusto?
> 
> Fantastico questo forum, grazie

 

Più che "attivare il supporto", stai compilando un nuovo set di tool con questa capacità

----------

## Ic3M4n

di base crossdev prende gcc binutils e compagnia bella marcate in testing. non chiedermi il perchè. credo che il motivo sia che per molte architetture tutto è in testing e quasi nulla stabile.

in ogni caso... dall'output di crossdev:

```
# crossdev 

Usage: crossdev [options] --target TARGET

Options:

    --b, --binutils ver   Specify version of binutils to use

    --g, --gcc ver        Specify version of gcc to use

    --k, --kernel ver     Specify version of kernel headers to use

    --l, --libc ver       Specify version of libc to use

    -S, --stable          Use latest stable versions as default

    -C, --clean target    Uninstall specified target

    -P, --portage opts    Options to pass to emerge (see emerge(1))

    --with[out]-headers   Build C library headers before C compiler?

Stage Options:

    -s0, --stage0         Build just binutils

    -s1, --stage1         Also build a C compiler (no libc/C++)

    -s2, --stage2         Also build kernel headers

    -s3, --stage3         Also build the C library (no C++)

    -s4, --stage4         Also build a C++ compiler [default]

Extra Fun (must be run after above stages):

    --ex-only             Skip the stage steps above

    --ex-gcc              Build extra gcc targets (gcj/ada/etc...)

    --ex-gdb              Build a cross gdb

    --ex-insight          Build a cross insight

```

puoi impostare la versione che preferisci, quindi puoi mettere la stessa che hai installato.

----------

## Moris_Co

Ora è tutto chiaro e ho compilato la mia prima cross-toolchain.

Grazie mille ad entrambi, siete stati gentilissimi.

----------

## Ic3M4n

figurati... in ogni caso io fino alla compilazione della toolchain non ho avuto problemi. quelli sono nati dopo  :Razz: 

quasi tutti i pacchetti mi falliscono miseramente e non ho ancora capito come installare determinati pacchetti...

vado a sminchiare tutto tra pacchetti in testing e pacchetti stabili.

se per te è risolto metti pure il tag nel titolo, puoi farlo editando il primo post.

----------

