GNU Compiler Collection: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Corretto: "rispetto alla versione" |
||
(60 versioni intermedie di 40 utenti non mostrate) | |||
Riga 1:
{{Software
|
|Screenshot =
|UltimaVersioneBeta =
|didascalia = Logo del compilatore▼
|DataUltimaVersioneBeta =
|SistemaOperativo = multipiattaforma
|SoftwareLibero = sì
|Lingua =
▲|licenza = [[GNU General Public License|GNU GPL]]
}}
'''
Nato inizialmente come un compilatore per il [[C (linguaggio)|linguaggio C]], dispone oggi di vari ''[[
== Storia ==
GCC è 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>[
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]], [[
== Linguaggi ==
* [[Ada (linguaggio)|Ada]] (GCC per Ada, noto anche come ''[[GNAT]]'')
* [[C (linguaggio di programmazione)|C]]
* [[C++]] (GCC
* [[Fortran]] (GCC per Fortran o ''[[gfortran]]'')
* [[linguaggio Java|Java]] (GCC per Java o ''[[GCJ]]'')
* [[Objective C|Objective-C]]
* [[Objective-C#Objective C.2B.2B|Objective-C++]]
* [[Go (linguaggio di programmazione)|Go]] (GCCGO)
== Architetture ==
* [[DEC Alpha|Alpha]]
* [[architettura ARM|ARM]]
* [[Atmel AVR|AVR e AVR32]]
* [[Blackfin]]
* [[Hitachi H8|H8/300]]
Riga 57 ⟶ 58:
* la famiglia [[MorphoSys]]
Altri processori, come [[D10V]], [[PDP-10]], [[MicroBlaze]] e [[Zilog Z8001|Z8000]], sono stati supportati da versioni di GCC
== SDCC (Small Device C Compiler) ==
Nonostante il piccolo numero di target disponibili, il compilatore è molto quotato e nella maggior parte delle situazioni dà risultati migliori dei sistemi di sviluppo professionali a pagamento.▼
▲l'[[SDCC]] ( [[Small Devices C Compiler]] ) [http://sdcc.sourceforge.net/] è un [[porting]] [[Open Source]] per i microcontrollori delle sole famiglie [[Z80]], [[8051]], [[68HC11]], [[PIC (microcontrollore)|Pic]] è stato separato dal progetto GCC per poter ottimizzare meglio il lavoro dei [[microcontrollori]],dove serve una grande efficienza del compilatore e contemporaneamente vivere in un ambiente molto povero di risorse [[RAM]] e [[Read-Only Memory|ROM]],con interfacce personalizzate e dotato di registri speciali incompatibili con l'elaborazione
È disponibile nei repo di [[Synaptic]]
▲Nonostante il piccolo numero di target disponibili,il compilatore è molto quotato e nella maggior parte delle situazioni dà risultati migliori dei sistemi di sviluppo professionali a pagamento
== Utilizzo e funzionamento ==
GCC, in quanto compilatore, ha come scopo primario la traduzione di [[codice sorgente]] in [[Linguaggio macchina|codice macchina]]
▲GCC, in quanto compilatore, ha come scopo primario la traduzione di [[codice sorgente]] in [[Linguaggio macchina|codice macchina]] che possa essere eseguito.
Ad esempio, per compilare un file di codice sorgente scritto in C, si può eseguire gcc fornendogli in input il file desiderato. Esiste un grandissimo numero di parametri che è possibile passare al compilatore per gestire i vari aspetti e i vari dettagli del processo di generazione del codice; l'unico obbligatorio è il nome del file da compilare.
Riga 76 ⟶ 77:
gcc main.c
</syntaxhighlight>
che ordina al compilatore di leggere il file <
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 <
# nella seconda fase, il file dà origine
# a questo punto entra in funzione il [[Linking|linker]] che produce un unico [[file eseguibile]], contenente il tutto, unendo tra loro tutti i file oggetto
== Note ==
<references />
== Altri progetti ==
{{interprogetto|preposizione=sul}}
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC|GCC|GCC}}
* {{cita web | 1 = http://www.network-theory.co.uk/docs/gccintro/ | 2 = An Introduction to GCC | accesso = 16 maggio 2010 | urlarchivio = https://web.archive.org/web/20100531171042/http://www.network-theory.co.uk/docs/gccintro/ | dataarchivio = 31 maggio 2010 | urlmorto = sì }}
{{GNU}}
{{FOSS}}
{{Portale|Informatica}}▼
{{Controllo di autorità}}
[[Categoria:Compilatori]]▼
|