Movatterモバイル変換


[0]ホーム

URL:


Vai al contenuto
WikipediaL'enciclopedia libera
Ricerca

GNU Compiler Collection

Da Wikipedia, l'enciclopedia libera.
GNU Compiler Collection
software
Logo
Logo
Schermata di esempio
Schermata di esempio
GenereCompilatore
Sviluppatoreprogetto GNU
Data prima versione23 maggio 1987
Ultima versione15.1 (25 aprile 2025)
Sistema operativoMultipiattaforma
LinguaggioC++
C
LicenzaGNU GPL
(licenza libera)
Sito webgcc.gnu.org
Modifica dati su Wikidata ·Manuale

GNU Compiler Collection o in breveGCC (in origineGNU C Compiler) è uncompilatore ottimizzantemultipiattaforma creato inizialmente dal fondatore della Free Software Foundation,Richard Matthew Stallman, come parte delProgetto GNU. Disponibile per vari linguaggi, architetture e sistemi operativi, GCC è distribuito in forma libera dallaFree Software Foundation tramite lalicenza GPL. Le versioni recenti sono incluse nelle principalidistribuzioni del sistema operativo GNU/Linux, e di molti altri sistemi, mentre sumacOS non è installato di base, ma è parte del pacchettoXcode, che dalla versione 5.0 comprende un altro compilatore, llvm, che sostituisce gcc.

Nato inizialmente come un compilatore per illinguaggio C, dispone oggi di varifrontend per altri linguaggi, tra cuiJava,C++,Objective C,Fortran eAda, e varibackend che sono in grado di generare linguaggi macchina per moltearchitetture, tra le qualix86,x86-64,ARM,IA-64,PowerPC,s390,SPARC.

Storia

[modifica |modifica wikitesto]

GCC è stato creato nel1987 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 dallaFree Software Foundation.

Nel1997 un gruppo di sviluppatori insoddisfatti dalla natura chiusa degli sviluppi e dal loro ritmo troppo lento ha creato il progettoEGCS (Experimental/Enhanced GNU Compiler System), che incorporava diversifork sperimentali in una linea di sviluppo unica, separata da GCC. Lo sviluppo diEGCS si è dimostrato sufficientemente vitale e nell'aprile del1999 EGCS è stato promosso al rango di versione ufficiale di GCC.[1][2]

GCC viene oggi sviluppato da programmatori di ogni parte del mondo ed è statoportato su più tipi diprocessori e sistemi operativi di qualsiasi altro compilatore.

Oltre a essere il compilatore ufficiale del sistemaGNU, incluse le varianti diGNU/Linux, GCC è stato adottato come compilatore principale per la creazione e lo sviluppo di diversi altri sistemi operativi, come i variBSD,macOS,NeXTSTEP eBeOS e DOS tramite il suo porting DJGPP.

Linguaggi

[modifica |modifica wikitesto]

La versione standard del compilatore comprende i front end per i linguaggi:

Architetture

[modifica |modifica wikitesto]

Tra i processori supportati da GCC (alla versione 4.1) vi sono:

In alcune release standard, sono stati supportati anche processori meno noti, tra cuiA29K,ARC,Atmel AVR,C4x,CRIS,D30V,DSP16xx,FR-30,FR-V,Intel i960,IP2000,M32R,68HC11,MCORE,MMIX,MN10200,MN10300,NS32K,ROMP,Stormy16,V850 edXtensa.Altri processori, comeD10V,PDP-10,MicroBlaze eZ8000, sono stati supportati da versioni di GCC sviluppate separatamente rispetto versione della Free Software Foundation.

SDCC (Small Device C Compiler)

[modifica |modifica wikitesto]

L'SDCC (Small Devices C Compiler) è unportingopen source per i microcontrollori delle sole famiglieZ80,8051,68HC11,Pic è stato separato dal progetto GCC per poter ottimizzare meglio il lavoro deimicrocontrollori, dove serve una grande efficienza del compilatore e contemporaneamente vivere in un ambiente molto povero di risorseRAM eROM, 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 diSynaptic

Utilizzo e funzionamento

[modifica |modifica wikitesto]

GCC, in quanto compilatore, ha come scopo primario la traduzione dicodice sorgente incodice macchina eseguibile.

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.

Un esempio elementare di compilazione è il comando

gccmain.c

che ordina al compilatore di leggere il filemain.c (.c è l'estensione standard dei file contenenticodice C) e compilarlo. Poiché non è stato specificato nessun nome per il file di output tramite il parametro-o, il file eseguibile viene chiamatoa.out.

La compilazione avviene in tre fasi:

  1. il file da compilare viene trattato dalpreprocessore, che analizza le direttive scritte per il compilatore (definite in alcune righe del codice, solitamente posizionate in testa al file e precedute dal carattere#). Se eseguito con il parametro-E, gcc esegue solo questo passo, fornendo in output il risultato delle attività del preprocessore;
  2. nella seconda fase, il file dà origine a un nuovofile oggetto, che non è ancora eseguibile;
  3. a questo punto entra in funzione illinker che produce un unicofile eseguibile, contenente il tutto, unendo tra loro tutti i file oggetto e i file dellelibrerie. Se si desidera non incorporare il codice delle librerie nel file eseguibile, si può usare ilcollegamento dinamico.

Note

[modifica |modifica wikitesto]
  1. ^GCC news and announcements
  2. ^Pentium Compiler FAQ - What is/was EGCS?

Altri progetti

[modifica |modifica wikitesto]

Altri progetti

Collegamenti esterni

[modifica |modifica wikitesto]
V · D · M
Progetto GNU
StoriaManifesto GNU ·Free Software Foundation (FSF Europe · FSF India · FSF Latin America) ·Storia del software libero
LicenzeGNU General Public License ·GNU Lesser General Public License ·GNU Free Documentation License ·GPL linking exception ·GNU Affero General Public License
SoftwareGNU (Varianti) ·GNU Hurd ·GTK ·GNOME ·GIMP ·Jami ·Bash ·Emacs ·Screen ·GCC ·Gnash ·gzip ·GRUB ·Pacchetti GNU
RappresentantiRichard Stallman ·Robert J. Chassell ·Bradley M. Kuhn ·John Sullivan ·Eben Moglen ·Loïc Dachary ·Georg C. F. Greve ·Alexandre Oliva ·Benjamin Mako Hill ·Federico Heinz ·Joshua Gay ·Matt Lee ·Ricardo Galli
Voci correlateRevolution OS ·BadVista ·Defective by Design ·Controversia sul nome GNU/Linux
V · D · M
Software libero e open source
GeneraleCopyleft ·Eventi ·Software libero ·Definizione ·Gratis versus libre ·Open source
Famiglie di sistemi operativiAros Research Operating System ·BSD ·Darwin ·eCos ·FreeDOS ·GNU ·Haiku ·Inferno ·Linux ·Mach ·Minix ·OpenSolaris ·Plan 9 ·ReactOS ·Redox ·Symbian OS
Sviluppo software open sourceEclipse ·Free Pascal ·GCC ·Gambas ·Java ·LLVM ·Lua ·NetBeans ·Octave ·Open64 ·Perl ·PHP ·Python ·ROSE ·Ruby ·Tcl
Storia del software liberoGNU ·Haiku ·Linux ·Mozilla (Application Suite ·Firefox ·Thunderbird)
OrganizzazioniApache Software Foundation ·Blender Foundation ·Eclipse Foundation ·freedesktop.org ·Free Software Foundation (Europe ·India ·Latin America) ·FSMI ·GNOME Foundation ·Google Code ·KDE ·Linux Foundation ·Mozilla Foundation ·Open Source Geospatial Foundation ·Open Source Initiative ·Software Freedom Conservancy ·SourceForge ·Symbian Foundation ·The Document Foundation ·Ubuntu Foundation ·Xiph.Org Foundation ·XMPP Standards Foundation ·X.Org Foundation ·Software Freedom Law Center
Licenze libereApache ·Artistica ·BSD ·GNU GPL ·GNU LGPL ·ISC ·MIT ·MPL ·Ms-PL/RL ·zlib ·Licenze approvate da FSF
Standard di licenzeOpen Source Definition ·The Free Software Definition ·Debian Free Software Guidelines
SfideBlob binario ·Canonical's contributor agreement ·Digital rights management ·Rebranding dei programmi Mozilla ·Software proprietario ·Causa SCO-IBM ·Restrizioni hardware ·Trusted computing ·Licenza virale ·Guerra dei browser ·Halloween Documents
Altri argomentiTermini alternativi ·Comunità software libero ·Distribuzione Linux ·Forking ·Movimento software libero ·Microsoft Open Specification Promise ·Revolution OS
Controllo di autoritàGND(DE4294848-4
  Portale Software libero: accedi alle voci di Wikipedia che trattano di software libero
Estratto da "https://it.wikipedia.org/w/index.php?title=GNU_Compiler_Collection&oldid=143908806"
Categorie:
Categorie nascoste:

[8]ページ先頭

©2009-2025 Movatter.jp