GNU Compiler Collection: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Xqbot (discussione | contributi)
m r2.5.2) (Bot: Modifico: tr:GNU Compiler Collection; modifiche estetiche
m rivista
Riga 1:
{{Infobox_Software |
|nome = GNU Compiler Collection|
|screenshot = [[File:GCC logo.png]] |
|didascalia = Logo del compilatore |
|sviluppatore = [[Free Software Foundation]] |
|versione_ultimo_rilascio = 4.5.0 |2
|data_ultimo_rilascio = [[1416 apriledicembre]] [[2010]] |
|sistema_operativo = [[Multi piattaformaMultipiattaforma]] |
|genere = [[Compilatore]] |
|licenza = [[GNU General Public License|GNU GPL]] |
|sito sito_webweb = [http://gcc.gnu.org gcc.gnu.org] |
}}
 
'''GCC''' ('''GNU Compiler Collection''', in origine '''GNU C Compiler''') è un [[Compilatorecompilatore]] multi-target creato inizialmente dal fondatore della [[Free Software Foundation]], [[Richard Matthew Stallman]], come parte del [[Progetto GNU]]. Le versioni recenti sono incorporateincluse nelle principali [[Distribuzione (Linux)|distribuzioni del sistema operativo [[GNU/Linux]], e di molti altri sistemi, mentre su [[Mac OS X]] non è incorporatoinstallato per default, bisognama installareè parte del [[Xcode]], un |pacchetto per sviluppo softwareXcode]].
 
Nato inizialmente come un compilatore per il [[C (linguaggio)|linguaggio C]], dispone oggi di vari ''[[front end]]'' per altri linguaggi, tra cui [[Java (linguaggio)|Java]], [[C++]], [[Objective C]], [[Fortran]] e [[Ada (linguaggio)|Ada]], e vari back-end che sono in grado di generare linguaggi macchina per molte [[Architettura (computer)|architetture]], tra le quali [[X86Architettura x86|x86]], [[EM64T|X64]], [[IA64IA-64]], [[PowerPC]], [[s390]], [[SPARC]] e molte altre.
 
== 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 (sviluppo software)|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.<ref>[http://www.gnu.org/software/gcc/news.html GCC news and announcements]</ref><ref>[http://wwwoldhome.goofschmorp.com/pcgde/pgcc-faq.html#egcs Pentium Compiler FAQ - What is/was EGCS?]</ref>
 
GCC viene oggi sviluppato da programmatori di ogni parte del mondo, ed è stato [[Portabilità|portato]] su più tipi di [[Microprocessore|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 [[Berkeley Software Distribution|BSD]], [[Mac OS X]], [[NeXTSTEP]] e [[BeOS]].
 
== Linguaggi ==
Riga 42:
* [[Hitachi H8|H8/300]]
* [[System/370]], [[zSeries|System/390]]
* [[IA-32]] ([[X86Architettura x86|x86]])
* [[EM64T]], [[AMD64]] ([[X64]]x64)
* [[IA-64]] ([[Itanium]])
* [[Motorola 68000]]
Riga 53:
* [[SuperH]]
* [[SPARC]]
* [[Virtual Address eXtension|VAX]]
* le famiglie [[Renesas]] [[R8C]]/[[M16C]]/[[M32C]]
* la famiglia [[MorphoSys]]
Riga 73:
 
Un esempio elementare di compilazione è il comando
<syntaxhighlight lang="bash">
gcc main.c
che ordina al compilatore di leggere il file <tt>main.c</tt> (<tt>.c</tt> è l'[[estensione (file)|estensione]] caratteristica dei file contenenti [[Linguaggio C|codice C]]) e compilarlo. Il file eseguibile viene chiamato <tt>[[a.out]]</tt> perché non è stato specificato alcun nome per il file di output con il parametro <tt>-o</tt>.
</syntaxhighlight>
che ordina al compilatore di leggere il file <tt>main.c</tt> (<tt>.c</tt> è l'[[estensioneEstensione (file)|estensione]] caratteristica dei file contenenti [[Linguaggio C (linguaggio)|codice C]]) e compilarlo. Il file eseguibile viene chiamato <tt>[[a.out]]</tt> perché non è stato specificato alcun nome per il file di output con il parametro <tt>-o</tt>.
 
La compilazione avviene in tre 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 dal carattere <tt>#<tt>). Se eseguito con il parametro <tt>-E</tt>, gcc esegue solo questo passo, fornendo in output il risultato delle attività del preprocessore.;
# nella seconda fase il file dà origine ad un nuovo file[[Codice formatooggetto|file oggetto]] che non è ancora eseguibile;
# a questo punto entra in funzione il [[Linking|linker]] che, unendo tutti i file oggetto tra loro e ai file delle [[Libreria software|librerie]], produce un unico [[file eseguibile]] contenente il tutto. Per non duplicare il codice delle librerie nell'eseguibile si può usare il [[Dynamic-link library|collegamento dinamico]].
 
== Note ==
# 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 dal carattere <tt>#<tt>). Se eseguito con il parametro <tt>-E</tt>, gcc esegue solo questo passo, fornendo in output il risultato delle attività del preprocessore.
<references />
# 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 tra loro e ai file delle [[Libreria software|librerie]], produce un unico file eseguibile contenente il tutto. Per non duplicare il codice delle librerie nell'eseguibile si può usare il [[Dynamic-link library|collegamento dinamico]].
== Collegamenti esterni ==
* {{en}} [http://gcc.gnu.org/ Sito ufficiale del progetto GCC]
* [http://www.network-theory.co.uk/docs/gccintro/ An Introduction to GCC]
 
{{GNU}}
Riga 86 ⟶ 94:
 
[[Categoria:Compilatori]]
 
== Collegamenti esterni ==
* [http://gcc.gnu.org/ Sito ufficiale del progetto GCC]
* [http://www.network-theory.co.uk/docs/gccintro/ An Introduction to GCC]
 
[[ar:تجميعة مصرفات جنو]]