GNU Compiler Collection
| GNU Compiler Collection | ||
|---|---|---|
| En del af GNU-værktøjskæden | ||
|
| ||
|
GCC påkaldte fra kommandolinjen på Debian | ||
| Generel information | ||
| programtype | Kompiler | |
| Udvikler | GNU projekt | |
| Udviklingsmodel | Gratis software | |
| Første udgivelse | 23. maj 1987 [ 1 ] | |
| Licens | GPLv3 | |
| Teknisk information | ||
| Planlagt ind | C , C++ | |
| Understøttede platforme | multi platform | |
| Versioner | ||
| Seneste stabile version | 11.1.0 ( info ) (27. april 2021 (1 år, 5 måneder og 19 dage)) | |
| Seneste version i test | 0,922. marts 1987 | |
| Links | ||
GNU Compiler Collection er et sæt kompilatorer skabt af GNU- projektet . GCC er gratis software og distribueres af Free Software Foundation ( FSF ) under GPL 's generelle offentlige licens .
Disse compilere betragtes som standard for UNIX -afledte , open source og også proprietære operativsystemer såsom Mac OS X. GCC kræver den suite af applikationer kendt som binutils til at udføre opgaver såsom at identificere objektfiler eller få deres størrelse for at kopiere, oversætte eller liste, linke eller fjerne unødvendige symboler fra dem.
GCC stod oprindeligt for GNU C Compiler , fordi den kun kompilerede C-sproget . Det blev senere udvidet til at kompilere C++ , Fortran , Ada og andre.
Mål
GCC er en del af GNU-projektet og har til formål at forbedre compileren, der bruges på alle GNU-systemer, inklusive GNU/Linux -varianten . GCC-udvikling bruger et åbent udviklingsmiljø og understøtter mange platforme for at tilskynde til brugen af en global klasse compiler-optimizer, som kan tiltrække mange udviklingsteams og sikre, at GCC- og GNU-systemer fungerer på forskellige arkitekturer. og forskellige miljøer, og endda mere, for at udvide og forbedre funktionerne i GCC.
Historie
Richard Stallman begyndte at skrive GCC i 1985. Han tilføjede elementer ved at udvide en allerede eksisterende C-kompiler. Compileren kompilerede oprindeligt Pastel , en udvidet, ikke-bærbar dialekt af Pascal , og blev skrevet i selve Pastel. Det blev omskrevet i C af Len Tower og Stallman, [ 2 ] og udgivet i 1987 [ 3 ] som GNU Project compiler, for at have en gratis software- kompiler tilgængelig . Dets udvikling blev overvåget af Free Software Foundation (FSF). [ 4 ]
I 1991 havde GCC 1.x nået et stabilitetspunkt, men arkitektoniske begrænsninger forhindrede mange ønskede forbedringer, så FSF begyndte arbejdet med GCC 2.x.
Da GCC var fri software, var der programmører, der ønskede at arbejde i andre retninger, for eksempel ved at skrive grænseflader til andre sprog end C , de var frie til at udvikle deres egne gafler til compileren. Flere gafler medførte ineffektivitet og uoverskuelighed, men vanskeligheden ved at producere kode, der blev accepteret af det officielle GCC-projekt, var meget frustrerende for mange, da FSF holdt et stramt greb om, hvad der blev tilføjet til den officielle GCC 2-version. x. Dette fik GCC til at blive citeret som et eksempel på "katedralen" softwareudviklingsmodel, der er nævnt i Eric S. Raymonds essay med titlen The Cathedral and the Bazaar .
Siden udgivelsen af version 4.4. af BSD i 1994 blev GCC standardkompileren til BSD- systemer .
Sprog
Version 4.6 inkluderer frontends for C ( gcc ), C++ ( g++ ), Java ( gcj ), Ada ( GNAT ), Objective-C ( gobjc ), Objective-C++ ( gobjc++ ) og Fortran ( gfortran ). [ 5 ] Understøttelse af Go ( gccgo ), Modula-2 , Modula-3 , Pascal ( gpc ), PL/I , D ( gdc ), Mercury og VHDL ( ghdl ) er også tilgængelig, dog ikke ud af æsken. . [ 6 ]
Arkitekturer
Version 4.2.3 inkluderer understøttelse af:
- BUE
- MRA
- Sortfinne
- CHRIS
- CRX
- Darwin
- DEC Alpha
- DEC Alpha/VMS
- VRF
- Linux
- H8/300
- H8/500
- HPPA
- IA-64 "Itanium"
- M32C
- M32R/D
- MIPS
- MMIX
- MN10300
- Morpho MT
- Motorola M680x0
- Motorola M68hc1x
- Motorola 88000
- PA-RISC
- PDP-11
- PowerPC
- RS/6000
- score
- SPARC
- SuperH
- System/370
- System 390
- System V
- TMS320C3x/C4x
- V850
- VAX
- x86
- x86-64
- Xstormy16
- Xtensa
- z-serien
Der er også understøttelse af mindre kendte arkitekturer: A29K , Atmel AVR , C4x , D30V , DSP16xx , FR-30 , FR-V , Intel i960 , IP2000 , MN10200 , NS32K og ROMP .
Understøttelse af yderligere processorer, såsom D10V , PDP-10 og Z8000 , er blevet leveret i versioner, der vedligeholdes adskilt fra FSF-udgivelsen.
Struktur
Den ydre grænseflade af GCC er generelt standard for et UNIX-system. Brugere kalder et controller-program kaldet gcc, som fortolker de givne argumenter, beslutter, hvilken compiler der skal bruges til hver fil, og kører assembleren med den resulterende kode, og derefter kører linkeren for at producere et komplet program .
Hver af kompilatorerne er et uafhængigt program, der tager kildekode som input og udsender assembly -kode . De har alle en fælles intern struktur: en per-sprog frontend, der behandler sproget og producerer et syntakstræ, og en backend, som konverterer disse træer til GCC's RTL ( Record Transfer Language ), derefter udfører forskellige optimeringer og producerer assembleren ved hjælp af arkitekturspecifik mønstergenkendelse, oprindeligt baseret på en algoritme af Jack Davidson og Chris Fraser .
Næsten hele GCC er skrevet i C, selvom meget af Ada-frontenden er skrevet i Ada. Den 30. maj 2010 blev det annonceret, at C++ vil blive brugt i GCC-udvikling. [ 7 ]
Frontends
De forreste ender varierer internt, idet de skal producere træer, der kan håndteres af bagenden. Alle parsere er top-down rekursive parsere og blev skrevet manuelt, ikke automatisk genereret.
Indtil for nylig var programrepræsentationstræet ikke fuldstændig uafhængigt af den processor, som du ønskede at generere koden til.
To nye sproguafhængige træformer er for nylig blevet inkluderet. Disse nye formater kaldes GENERIC og GIMPLE. Parsing udføres nu ved at oprette sprogafhængige midlertidige træer og konvertere dem til GENERIC. Gimplikatoren konverterer dette til GIMPLE , som er det fælles sprog for en lang række arkitektur-uafhængige og sprog-uafhængige optimeringer.
Træoptimering indgår ikke i, hvad de fleste compilerudviklere betragter som frontend-arbejde, da det ikke er sprogafhængigt og ikke involverer parsing. GCC-udviklerne har givet denne del af compileren navnet på den midterste ende . Optimeringer omfatter fjernelse af kode, der aldrig kører, delvis fjernelse af redundans, redundans ved evaluering af udtryk... Der arbejdes i øjeblikket på optimeringer baseret på array-afhængighed.
Backend
Backends adfærd er delvist specificeret af præprocessormakroerne, der er specifikke for målarkitekturen, for eksempel for at definere positionen af de mest signifikante bits, ordstørrelse, konvention for opkald osv. Bagenden bruger disse til RTL -generering , selvom dette i GCC er processoruafhængig, og den indledende sekvens af abstrakte instruktioner er skræddersyet til målarkitekturen .
Kompatible IDE'er
De fleste integrerede udviklingsmiljøer skrevet til GNU/Linux og nogle andre operativsystemer understøtter GCC. Disse omfatter:
- Anjuta
- Kode::Blokkere
- kodelit
- Dev-C++
- Formørkelse
- geany
- KDevelop
- NetBeans
- QtCreator
- xcode
- Visual Studio kode
- Zinjai
Referencer
- ^ "GCC-udgivelser" . GNU projekt . Hentet 30. august 2009 .
- ^ Stallman, Richard M. (februar 1986). "GNUStatus" . GNU's Bulletin (Free Software Foundation) 1 (1) . Hentet 26. september 2006 .
- ↑ Tower, Leonard (1987) " GNU C compiler beta test release, " comp.lang.misc USENET nyhedsgruppe; se også http://gcc.gnu.org/releases.html#timeline
- ↑ Stallman, Richard M. (2001) " Contributors to GCC, " i Using and Porting the GNU Compiler Collection (GCC) for gcc version 2.95 (Cambridge, Mass.: Free Software Foundation)
- ↑ "gccgo sprogbidrag accepteret" Arkiveret 10. oktober 2017 på Wayback Machine , gmane.org, Hentet 26. januar 2010.
- ↑ GCC-frontends arkiveret 9. februar 2014 på Wayback Machine , GCC.org, hentet 11. maj 2008.
- ↑ Det er OK at bruge C++ i GCC
Bibliografi
- Richard M. Stallman : Brug og portering af GNU Compiler Collection , Free Software Foundation , ISBN 0-595-10035-X
- Richard M. Stallman: Using Gcc: The Gnu Compiler Collection Reference , Free Software Foundation, ISBN 1-882114-39-6
- Brian J. Gough : An Introduction to GCC , Network Theory Ltd., ISBN 0-9541617-9-3
Se også
Portal: Gratis software . Indhold relateret til fri software .- GCC inkluderer Boehm GC , en konservativ skraldeopsamler til C/C++.
- GCC-XML
- LLVM
- MinGW
- Cygwin
- g++
- lave