GNU Compiler Collection

compilatore multipiattaforma creato inizialmente dal fondatore della Free Software Foundation, Richard Stallman

Template:Stub software libero Template:Infobox Software

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.

Nata 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.0

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.

GCC viene oggi sviluppato da programmatori di ogni parte del mondo, ed è stato portata 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.

Linguaggi

Al momento del rilascio della versione 4.1.0 (rilasciata il 28 febbraio 2006), la versione standard del compilatore comprende front end per i linguaggi:

Architetture

I processori target di GCC (alla versione 4.1) includono:

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.

Utilizzo e funzionamento

Gcc è un compilatore che permette in modo potente di creare eseguibili. gcc è il comando che richiama il compilatore. -o nome_file è un opzioni che permette di specificare al gcc quale file deve andare a compilatore. Ovviamente si scrive in linguaggio C dunque i file dovranno avere l'estensione .c

La compilazione avviene in tre differenti fasi:

  1. il file da compilare viene trattato dal preprocessore (analizza le direttive scritte per il compilatore solitamente sono quelle righe che iniziano con il carattere #). Utilizzando il parametro -E si vedrà l'output del preprocessore
 gcc -E nome_file.c
  1. nella seconda fase il file da origine ad un nuovo file formato oggetto che non è ancora eseguibile
  2. 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.