GNU Compiler Collection: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
FrescoBot (discussione | contributi)
m Bot: overlinking giorni e mesi dell'anno e modifiche minori
fix
 
(29 versioni intermedie di 23 utenti non mostrate)
Riga 1:
{{Software
|Nome = GNU Compiler Collection
|Logo = GCC logo.png
|Screenshot =
|Didascalia = Logo del compilatore
|Sviluppatore = [[Free Software Foundation]]
|UltimaVersione = 4.7.2
|DataUltimaVersione = 20 settembre [[2012]]
|UltimaVersioneBeta =
|DataUltimaVersioneBeta =
|SistemaOperativo = multipiattaforma
|Linguaggio = c++
|Genere = compilatore
|Licenza = [[GNU General Public License|GNU GPL]]
|SoftwareLibero = sì
|Lingua =
|SitoWeb = http://gcc.gnu.org
}}
 
'''GCCGNU Compiler Collection''' (o in breve '''GNU Compiler CollectionGCC''', (in origine '''GNU C Compiler''') è un [[Compilatore con ottimizzatore|compilatore ottimizzante]] multi-target[[multipiattaforma]] creato inizialmente dal fondatore della [[Free Software Foundation]], [[Richard Matthew Stallman]], come parte del [[Progetto GNU]]. Disponibile per vari linguaggi, architetture e sistemi operativi, GCC è distribuito in forma libera dalla [[Free Software Foundation]] tramite la [[GNU General Public License|licenza GPL]]. Le versioni recenti sono incluse nelle principali [[Distribuzione (Linux)|distribuzioni del sistema operativo GNU/Linux]], e di molti altri sistemi, mentre su [[Mac OS XmacOS]] non è installato perdi defaultbase, ma è parte del pacchetto [[Xcode|pacchetto Xcode]], che dalla versione 5.0 comprende un altro compilatore, llvm, che sostituisce gcc.
 
Nato inizialmente come un compilatore per il [[C (linguaggio)|linguaggio C]], dispone oggi di vari ''[[front endfrontend]]'' per altri linguaggi, tra cui [[Java (linguaggio di programmazione)|Java]], [[C++]], [[Objective C]], [[Fortran]] e [[Ada (linguaggio)|Ada]], e vari back-end''backend'' che sono in grado di generare linguaggi macchina per molte [[Architettura (computer)|architetture]], tra le quali [[Architettura x86|x86]], [[x86-64]], [[Architettura ARM|ARM]], [[IA-64]], [[PowerPC]], [[s390]], [[SPARC]].
 
== 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>[httphttps://gcc.gnu.org/news.html GCC news and announcements]</ref><ref>[http://oldhome.schmorp.de/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 XmacOS]], [[NeXTSTEP]] e [[BeOS]] e DOS tramite il suo porting DJGPP.
 
== Linguaggi ==
Line 35 ⟶ 28:
* [[Ada (linguaggio)|Ada]] (GCC per Ada, noto anche come ''[[GNAT]]'')
* [[C (linguaggio di programmazione)|C]]
* [[C++]] (GCC forper C++ o ''G++'')
* [[Fortran]] (GCC per Fortran o ''[[gfortran]]'')
* [[linguaggio Java|Java]] (GCC per Java o ''[[GCJ]]'')
Line 66 ⟶ 59:
 
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]], [[68HC11]], [[MCORE]], [[MMIX]], [[MN10200]], [[MN10300]], [[microprocessore 320xx|NS32K]], [[ROMP]], [[Stormy16]], [[V850]] ed [[Xtensa]].
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 84 ⟶ 77:
gcc main.c
</syntaxhighlight>
che ordina al compilatore di leggere il file <ttcode>main.c</ttcode> (<ttcode>.c</ttcode> è l'[[Estensione (file)|estensione]] standard dei file contenenti [[C (linguaggio)|codice C]]) e compilarlo. Poiché non è stato specificato alcunnessun nome, per il file di output tramite il parametro <ttcode>-o</ttcode>, per il file di output, il file eseguibile viene chiamato <ttcode>[[a.out]]</ttcode>.
 
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 <ttcode>#<tt/code>). Se eseguito con il parametro <ttcode>-E</ttcode>, gcc esegue solo questo passo, fornendo in output il risultato delle attività del preprocessore;
# 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}}
* {{en}} [http://gcc.gnu.org/ Sito ufficiale]
* {{FOLDOC|GCC|GCC}}
* [http://www.network-theory.co.uk/docs/gccintro/ An Introduction to 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à}}
{{Portale|Informaticasoftware libero}}
 
[[Categoria:Progetto GNU]]