GNU Compiler Collection: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: Elimino interlinks vedi Wikidata |
fix |
||
(33 versioni intermedie di 26 utenti non mostrate) | |||
Riga 1:
{{Software
|Nome = GNU Compiler Collection
|Screenshot =
|UltimaVersioneBeta =
|DataUltimaVersioneBeta =
|SistemaOperativo = multipiattaforma
|Genere = compilatore
|Licenza = [[GNU General Public License|GNU GPL]]
|SoftwareLibero = sì
|Lingua =
}}
'''
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 ==
Line 36 ⟶ 28:
* [[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]]'')
Line 66 ⟶ 58:
* la famiglia [[MorphoSys]]
In alcune release standard, sono stati supportati anche processori meno noti, tra cui [[A29K]], [[Advanced Risc Computing|ARC]], [[Atmel AVR]], [[C4x]], [[CRIS]], [[D30V]], [[DSP16xx]], [[FR-30]], [[FR-V]], [[Intel i960]], [[IP2000]], [[M32R]], [[
Altri processori, come [[D10V]], [[PDP-10]], [[MicroBlaze]] e [[Zilog Z8001|Z8000]], sono stati supportati da versioni di GCC sviluppate separatamente rispetto versione della Free Software Foundation.
== SDCC (Small Device C Compiler) ==
L'[https://web.archive.org/web/20190430033914/http://sdcc.sourceforge.net/ SDCC] ([[Small Devices C Compiler]]) è 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.▼
▲L'[http://sdcc.sourceforge.net/ SDCC] ([[Small Devices C Compiler]]) è 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.
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.
È disponibile nei repo di [[Synaptic]]
== Utilizzo e funzionamento ==▼
▲== Utilizzo e funzionamento ==
GCC, in quanto compilatore, ha come scopo primario la traduzione di [[codice sorgente]] in [[Linguaggio macchina|codice macchina]] eseguibile.
Line 85 ⟶ 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 un nuovo [[Codice oggetto|file oggetto]], che non è ancora eseguibile;
# 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 e i file delle [[Libreria software|librerie]]. Se si desidera non incorporare il codice delle librerie nel file eseguibile, si può usare il [[Dynamic-link library|collegamento dinamico]].
== 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:Progetto GNU]]
|