GNU Compiler Collection: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m r2.5.2) (Bot: Modifico: tr:GNU Compiler Collection; modifiche estetiche |
m rivista |
||
Riga 1:
{{Infobox_Software
|sito
}}
'''GCC''' ('''GNU Compiler Collection''', in origine '''GNU C Compiler''') è un [[
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 [[
== Storia ==
GCC
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
GCC viene oggi sviluppato da programmatori di ogni parte del mondo
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]] ([[
* [[EM64T]], [[AMD64]] (
* [[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">
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'[[
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
# 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 ==▼
* [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:تجميعة مصرفات جنو]]
|