GNU Compiler Collection
Da Wikipedia, l'enciclopedia libera.
GNU Compiler Collection | |
---|---|
Logo del compilatore
|
|
Sviluppatore | Free Software Foundation |
Ultima versione | 4.1.2 / 13 febbraio 2007 |
OS | Multi piattaforma |
Genere | Compilatore |
Licenza | GPL |
Sito web | http://gcc.gnu.org |
GCC (GNU Compiler Collection, in origine GNU C Compiler) è un insieme di compilatori creato inizialmente dall'hacker americano Richard Stallman come parte del Sistema GNU, un sistema operativo libero compatibile con Unix. Le versioni recenti di GCC, sviluppate dalla FSF, sono incorporate nelle principali distribuzioni del sistema operativo GNU/Linux, e di molti altri sistemi basati su fondamenta Unix, come per esempio Mac OS X.
Nato inizialmente come un compilatore per il linguaggio C (il nome in origine era GNU C Compiler), GCC dispone oggi di vari front end per altri linguaggi, tra cui Java, C++ , Objective_C ,Fortran e Ada, ed è in grado di generare eseguibili per molte architetture, tra le quali x86 (intel compatibili), x86 a 64 bit (AMD/intel a 64 bit), PowerPC, s390 (IBM), SPARC (Sun Microsystems).
L'ultima versione rilasciata è la 4.1.2.
Indice |
[modifica] Storia
GCC, il compilatore C è stato creato nel 1987 da Richard Stallman come parte del sistema GNU, che aveva bisogno di un compilatore che fosse software libero. Il suo sviluppo è stato seguito da vicino dalla Free Software Foundation.
Nel 1997 un gruppo di sviluppatori insoddisfatti dalla natura chiusa degli sviluppi e dal loro ritmo troppo lento ha creato il progetto EGCS (Experimental/Enhanced GNU Compiler System), che incorporava diversi fork sperimentali in una linea di sviluppo unica, separata da GCC. Lo sviluppo di EGCS si è dimostrato sufficientemente vitale, e nell'aprile del 1999 EGCS è stato promosso al rango di versione ufficiale di GCC.[1][2]
GCC viene oggi sviluppato da programmatori di ogni parte del mondo, ed è stato portato su più tipi di processori e sistemi operativi di qualsiasi altro compilatore.
Oltre a essere il compilatore ufficiale del sistema GNU, incluse le varianti di GNU/Linux, GCC è stato adottato come compilatore principale per la creazione e lo sviluppo di diversi altri sistemi operativi, come i vari BSD, Mac OS X, NeXTSTEP e BeOS.
[modifica] Linguaggi
Al momento del rilascio della versione 4.1.1, la versione standard del compilatore comprende front end per i linguaggi:
- Ada (GCC per Ada, noto anche come GNAT)
- Linguaggio C
- C++ (GCC for C++ o G++)
- Fortran (GCC per Fortran o GFortran)
- Java (GCC per Java o GCJ)
- Objective-C
- Objective-C++
[modifica] Architetture
I processori target di GCC (alla versione 4.1) includono:
- Alpha
- ARM
- Blackfin
- H8/300
- System/370, System/390
- IA-32 (x86) e AMD64
- IA-64 (l'"Itanium")
- Motorola 68000
- Motorola 88000
- MIPS
- PA-RISC
- PDP-11
- PowerPC
- SuperH
- SPARC
- VAX
- le famiglie Renesas R8C/M16C/M32C
- la famiglia MorphoSys
Processori meno noti che sono stati supportati in alcune release standard includono A29K, ARC, Atmel AVR, C4x, CRIS, D30V, DSP16xx, FR-30, FR-V, Intel i960, IP2000, M32R, 68HC11, MCORE, MMIX, MN10200, MN10300, NS32K, ROMP, Stormy16, V850 ed Xtensa. Altri processori, come D10V, PDP-10, MicroBlaze e Z8000, sono stati supportati da versioni di GCC mantenute separatamente dalla versione della FSF.
[modifica] Utilizzo e funzionamento
Gcc è un potente compilatore, il cui utilizzo tipico è tradurre file scritti in un linguaggio di programmazione in file eseguibili. Ad esempio, se vogliamo compilare un codice sorgente scritto in C, possiamo aprire una shell ed utilizzare il comando gcc per richiamare il compilatore. Ci sono un grandissimo numero di parametri che è possibile passare al compilatore; tra questi, uno è obbligatorio: il nome del file da compilare. Un altro parametro, non obbligatorio ma molto utilizzato, è "-o nome_file", che dice al programmatore come chiamare il file eseguibile prodotto (in caso questo nome parametro non sia passato, l'eseguibile prodotto si chiamerà a.out). Ad esempio quindi il comando:
gcc -o main main.c
dice al compilatore di leggere il file main.c (".c" è l'estensione caratteristica dei file contenenti programmi scritti in linguaggio C), compilarlo e salvare il file eseguibile come main.
La compilazione avviene in tre differenti fasi:
- il file da compilare viene trattato dal preprocessore, che analizza le direttive scritte per il compilatore (definite in alcune righe del codice, solitamente posizionate in testa al file e precedute con il carattere #). Utilizzando il parametro -E si può vedere l'output del preprocessore.
- nella seconda fase il file dà origine ad un nuovo file formato oggetto che non è ancora eseguibile
- a questo punto entra in funzione il linker che unendo tutti i file oggetto (anche i file delle librerie lo sono) produce un file eseguibile contenente il tutto. Se si vuole creare un file da riutilizzare come libreria in altre sezioni del codice bisogna nominarlo .h in modo che venga compilato come oggetto.
![]() |
|||||||
---|---|---|---|---|---|---|---|
Progetto Informatica | Portale Informatica | BarCode | |||||
Categorie principali
|