Gentoo Logo

[ << ] [ < ] [ Home ] [ > ] [ >> ]


1. Introduzione

Indice:

1.a. Preludio

Il cross development, sviluppare cioè su una piattaforma per eseguire ciò che è stato generato su di un'altra, è solitamente considerata un'arte oscura, che richiede molte ricerche, fatta di tentativi ed errori, alla cui base c'è la perseveranza. Gli intrepidi sviluppatori devono affrontare la carenza di documentazione e la mancanza di toolkit open source maturi e completi per lo sviluppo multi piattaforma. Il lavoro portato avanti dal Progetto Gentoo Embedded, dal Gruppo Gentoo Toolchain e da altri partecipanti ha prodotto e continua a migliorare un ambiente di sviluppo basato su Gentoo che semplifica notevolmente il cross sviluppo.

1.b. La Toolchain

Il termine "toolchain" si riferisce all'insieme dei pacchetti usati per creare un sistema (i "tool", ossia gli strumenti, che sono usati nella catena, "chain", di eventi composta dal prendere dati input e generare dati in output ). E' una definizione imprecisa se si guarda a quali pacchetti nello specifico sono considerati parte della toolchain, ma al fine di semplificare il concetto, si considerano tutti quei componenti necessari a compilare del codice in qualcosa di divertente e utilizzabile.

La toolchain è composta dai seguenti elementi:

  • binutils - Strumenti essenziali per la manipolazione di binari (include l'assembler ed il linker)
  • gcc - La Collezione di Compilatori GNU (il compilatore C e C++)
  • glibc o uclibc o newlib - La libreria C di sistema
  • linux-headers - Gli header del Kernel necessari alla libreria C di sistema
  • gdb - Il debugger GNU

Tutti i sistemi Gentoo correttamente configurati hanno installata una toolchain come parte del sistema base. Tale toolchain è configurata per generare binari per la medesima piattaforma dove è installata.

Per generare binari su un sistema e far sì che essi possano essere eseguiti su una diversa piattaforma, si avrà bisogno di una toolchain speciale - una cosiddetta cross toolchain - specifica per la piattaforma di destinazione. Gentoo mette a disposizione per questo scopo un semplice ma potente strumento chiamato crossdev. Crossdev può generare e installare sul sistema un numero arbitrario di cross toolchain, purché supportate dal GCC. Dal momento che Gentoo installa tutti i file delle toolchain in directory specifiche per ogni architettura, tali toolchain non interferiranno con quella nativa di sistema.

1.c. Variabili d'Ambiente

Alcune variabili d'ambiente usate dalla toolchain di Gentoo e da Portage possono confondere sviluppatori non esperti di cross development. La seguente tabella spiega alcune di queste ingannevoli variabili e fornisce dei valori tipo, basati sugli esempi di cross development presentati in questa guida. Vedere Ulteriori Terminologie e Variabili per altre variabili insolite e relativi concetti.

Variabile Significato quando si genera una Cross-Toolchain Significato quando si generano dei "Cross-Binari"
CBUILD Piattaforma su cui si sta compilando Piattaforma su cui si sta compilando
CHOST Piattaforma su cui la cross-toolchain sarà eseguita Piattaforma su cui saranno eseguiti i binari compilati dalla cross-toolchain
CTARGET Piattaforma su cui sarano eseguiti i binari compilati dalla cross-toolchain Piattaforma su cui sarano eseguiti i binari compilati dalla cross-toolchain. Ridondante, ma non c'è pericolo se si imposta questa variabile, e solo pochi binari si comportano allo stesso modo.
ROOT Percorso alla root virtuale (/) dove si andrà a installare
PORTAGE_CONFIGROOT Percorso alla root virtuale (/) dove portage potrà trovare i suoi file di configurazione (come /etc/make.conf)

Se, ad esempio, si avesse un desktop AMD64 con Gentoo e si desiderasse sviluppare qualcosa per il proprio PDA, architettura ARM, la tabella illustrata sopra apparirebbe così:

Variabile Valore per Generare la Cross-Toolchain Valore per Generare i "Cross-Binari"
CBUILD x86_64-pc-linux-gnu x86_64-pc-linux-gnu
CHOST x86_64-pc-linux-gnu arm-unknown-linux-gnu
CTARGET arm-unknown-linux-gnu non impostato
ROOT non impostare -- Come impostazione predefinita punta a / /percorso/dove/verrà/installato
PORTAGE_CONFIGROOT non impostare -- Come impostazione predefinita punta a / /percorso/ambiente/portage/per/arm/

1.d. Ulteriori Terminologie e Variabili

canadian cross
Il processo di generare un cross-compilatore che funzionerà su una piattaforma differente da quella dove è stato compilato (CBUILD != CHOST && CHOST != CTARGET)
sysroot: system root
La directory dove il compilatore cercherà i proprio header standard e le proprie librerie
hardfloat
Il Sistema ha un'Unità a Virgola Mobile (Floating Point Unit (FPU)) per gestire calcoli matematici a virgola mobile
softfloat
Il Sistema non è dotato di una FPU hardware, perciò tutte le operazioni a virgola mobile sono approssimate in virgola fissa
PIE
Position Independent Executable (-fPIE -pie)
PIC
Position Independent Code (-fPIC)
CRT
C RunTime
Tuple
Per crossdev, è definito come una stringa nel formato ARCH-VENDOR-OS-LIBC. Vedere crossdev -t help per informarsi precise su come questa stringa può essere completata.

[ << ] [ < ] [ Home ] [ > ] [ >> ]


Stampa

Visualizza tutto

Aggiornato il 31 dicembre 2010

Oggetto: Un'introduzione al mondo embedded, ai cross-compilatori e ai draghi.

Mike Frysinger
Autore

Ned Ludd
Autore

Robin H. Johnson
Autore

Alex Tarkovsky
Autore

Alexey Shvetsov
Autore

Raúl Porcel
Autore

Joshua Saddler
Redazione

Andrea Perotti
Traduzione

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.