GNU Compiler Collection: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
fix
 
(11 versioni intermedie di 9 utenti non mostrate)
Riga 11:
}}
 
'''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 [[macOS]] non è installato perdi defaultbase, ma è parte del pacchetto [[Xcode|pacchetto Xcode]], che (dalla versione 5.0 di Xcode è presentecomprende un altro compilatore, llvm, che sostituisce completamente 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.
Riga 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 ==
 
GCC, in quanto compilatore, ha come scopo primario la traduzione di [[codice sorgente]] in [[Linguaggio macchina|codice macchina]] eseguibile.
 
Riga 77:
gcc main.c
</syntaxhighlight>
che ordina al compilatore di leggere il file <code>main.c</code> (<code>.c</code> è 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 <code>-o</code>, per il file di output, il file eseguibile viene chiamato <code>[[a.out]]</code>.
 
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 <code>#</code>). Se eseguito con il parametro <code>-E</code>, 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]].
 
Riga 88:
 
== Altri progetti ==
{{interprogetto|preposizione=sul}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{cita web|http://gcc.gnu.org/|Sito ufficiale|lingua=en}}
* {{FOLDOC|GCC|GCC}}
* {{cita web|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}}