Colecția GNU Compiler

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Colecția GNU Compiler
software
Siglă
Exemplu de captură de ecran
Tip Compilator
Dezvoltator Proiect GNU
Data primei versiuni 23 mai 1987
Ultima versiune 11.2 (28 iulie 2021)
Sistem de operare Multiplatform
Limba C ++
Set de instrumente Linia de comandă
Licență GNU GPL
( licență gratuită )
Site-ul web gcc.gnu.org

GCC ( GNU Compiler Collection , inițial GNU C Compiler ) este un compilator multi-platformă creat inițial de fondatorul Free Software Foundation , Richard Matthew Stallman , ca parte a proiectului GNU . Versiunile recente sunt incluse în distribuțiile principale ale sistemului de operare GNU / Linux și în multe alte sisteme, în timp ce pe macOS nu este instalat în mod implicit, dar face parte din pachetul Xcode (din versiunea 5.0 a Xcode există un alt compilator, llvm care înlocuiește complet gcc).

Născut inițial ca un compilator pentru limbajul C , acesta are acum diverse front-end-uri pentru alte limbi, inclusiv Java , C ++ , Objective C , Fortran și Ada , și diverse back-end-uri capabile să genereze limbaje de mașini pentru mulți arhitecturi , inclusiv x86 , x86-64 , ARM , IA-64 , PowerPC , s390 , SPARC .

Istorie

GCC a fost creat în 1987 de Richard Stallman ca parte a sistemului GNU, care avea nevoie de un compilator care să fie software liber. Dezvoltarea sa a fost urmată îndeaproape de Free Software Foundation .

În 1997, un grup de dezvoltatori nemulțumiți de natura închisă a dezvoltărilor și de ritmul lor prea lent au creat proiectul EGCS ( Experimental / Enhanced GNU Compiler System ), care a încorporat mai multe furci experimentale într-o singură linie de dezvoltare, separată de GCC. Dezvoltarea EGCS s-a dovedit suficient de viabilă și în aprilie 1999 EGCS a fost promovat la statutul de versiune oficială a CCG. [1] [2]

GCC este acum dezvoltat de programatori din întreaga lume și a fost portat la mai multe tipuri de procesoare și sisteme de operare decât orice alt compilator.

Pe lângă faptul că este compilatorul oficial al sistemului GNU , inclusiv variantele GNU / Linux , GCC a fost adoptat ca principal compilator pentru crearea și dezvoltarea mai multor alte sisteme de operare, precum diferite BSD , macOS , NeXTSTEP și BeOS și DOS prin intermediul său Port DJGPP.

Limbi

Versiunea standard a compilatorului include frontend-urile pentru limbile:

Arhitecturi

Printre procesoarele acceptate de GCC (la versiunea 4.1) se numără:

In unele versiuni standard procesoare mai puțin cunoscute , au fost sprijinite, inclusiv A29K , ARC , Atmel AVR , C4x , CRIS , D30V , DSP16xx , FR-30 , FR-V , Intel i960 , IP2000 , M32R , 68HC11 , MCORE , cat merita de fapt , MN10200 , MN10300 , NS32K , ROMP , Stormy16 , V850 și Xtensa . Alte procesoare, precum D10V , PDP-10 , MicroBlaze și Z8000 , au fost acceptate de versiunile GCC dezvoltate separat de versiunea Free Software Foundation.

SDCC (Small Device C Compiler)

SDCC ( Small Devices C Compiler ) este un port open source pentru microcontrolerele numai pentru familiile Z80 , 8051 , 68HC11 , Pic a fost separat de proiectul GCC pentru a optimiza mai bine activitatea microcontrolerelor , unde o eficiență mare a compilatorului și trăind în același timp într-un mediu foarte sărac în resurse RAM și ROM , cu interfețe personalizate și dotate cu registre speciale incompatibile cu procesarea.

În ciuda numărului mic de ținte disponibile, compilatorul este foarte apreciat și, în cele mai multe situații, oferă rezultate mai bune decât sistemele de dezvoltare profesională plătite.

Este disponibil în repo Synaptic

Utilizare și funcționare

GCC, în calitate de compilator, are ca scop principal traducerea codului sursă în codul mașinii executabile.

De exemplu, pentru a compila un fișier de cod sursă scris în C, puteți rula gcc oferindu-i fișierul dorit ca intrare. Există un număr imens de parametri care pot fi trecuți compilatorului pentru a gestiona diferitele aspecte și detalii ale procesului de generare a codului; singurul obligatoriu este numele fișierului care trebuie completat.

Un exemplu elementar de compilare este comanda

 gcc main.c

care instruiește compilatorul să citească fișierul main.c ( .c este extensia standard a fișierelor care conțin cod C ) și să îl compileze. Deoarece nu a fost specificat niciun nume de fișier de ieșire prin intermediul parametrului -o , fișierul executabil se numește a.out .

Compilarea are loc în trei etape:

  1. fișierul care trebuie compilat este gestionat de preprocesor , care analizează directivele scrise pentru compilator (definite în unele linii ale codului, de obicei poziționate în partea de sus a fișierului și precedate de caracterul # ). Dacă este executat cu parametrul -E , gcc efectuează doar acest pas, oferind rezultatul activităților preprocesatorului ca ieșire;
  2. în a doua fază, fișierul dă naștere unui nou fișier obiect , care nu este încă executabil;
  3. în acest moment intră în funcțiune linker -ul care produce un singur fișier executabil , care conține totul, unind toate fișierele obiect și fișierele bibliotecii . Dacă nu doriți să încorporați codul bibliotecii în fișierul executabil, puteți utiliza legarea dinamică .

Notă

Alte proiecte

linkuri externe

Controlul autorității GND ( DE ) 4294848-4
Software gratuit Free Software Portal : accesați intrările Wikipedia care se ocupă de software gratuit