Вы находитесь на странице: 1из 10

GNUCompilerCollection

FromWikipedia,thefreeencyclopedia

TheGNUCompilerCollection(GCC)isacompiler
systemproducedbytheGNUProjectsupportingvarious
programminglanguages.GCCisakeycomponentofthe
GNUtoolchain.TheFreeSoftwareFoundation(FSF)
distributesGCCundertheGNUGeneralPublicLicense
(GNUGPL).GCChasplayedanimportantroleinthe
growthoffreesoftware,asbothatoolandanexample.
OriginallynamedtheGNUCCompiler,whenitonly
handledtheCprogramminglanguage,GCC1.0was
releasedin1987.[1]ItwasextendedtocompileC++in
Decemberofthatyear.Frontendswerelaterdeveloped
forObjectiveC,ObjectiveC++,Fortran,Java,Ada,
andGoamongothers.[5]
GCChasbeenportedtoawidevarietyofprocessor
architectures,andiswidelydeployedasatoolinthe
developmentofbothfreeandproprietarysoftware.GCC
isalsoavailableformostembeddedplatforms,including
Symbian(calledgcce),[6]AMCC,andFreescalePower
Architecturebasedchips.[7]Thecompilercantargeta
widevarietyofplatforms,includingvideogameconsoles
suchasthePlayStation2[8]andDreamcast.[9]

GNUCompilerCollection

Developer(s)

GNUProject

Initialrelease

May23,1987[1]

Stablerelease

5.3[2]/December4,2015

Writtenin

C++[3]originallyC

Operatingsystem Crossplatform
Platform

GNU

Type

Compiler

License

GNUGPL3+withGCC
RuntimeLibraryException[4]

Website

gcc.gnu.org
(https://gcc.gnu.org)

AswellasbeingtheofficialcompileroftheGNUoperatingsystem,GCChasbeenadoptedasthestandard
compilerbymanyothermodernUnixlikecomputeroperatingsystems,includingtheBSDfamily,although
FreeBSDandOSXhavemovedtotheLLVMsystem.[10]VersionsarealsoavailableforMicrosoftWindows
andotheroperatingsystemsGCCcancompilecodeforAndroidandiOS.

Contents
1 History
2 Design
2.1 Frontends
2.2 GENERICandGIMPLE
2.3 Optimization
2.4 Backend
2.5 Features
3 Languages
4 Architectures
5 Development
6 License
7 Uses
8 Seealso

8 Seealso
9 References
10 Furtherreading
11 Externallinks
11.1 Official
11.2 Other

History
InanefforttobootstraptheGNUoperatingsystem,RichardStallmanaskedAndrewS.Tanenbaum,theauthor
oftheAmsterdamCompilerKit(alsoknownastheFreeUniversityCompilerKit)ifhecouldusethatsoftware
forGNU.WhenTanenbaumtoldhimthatwhiletheFreeUniversitywasfree,thecompilerwasnot,Stallman
decidedtowritehisown.[11]Stallman'sinitialplan[12]wastorewriteanexistingcompilerfromLawrence
LivermoreLaboratoryfromPasteltoCwithsomehelpfromLenTowerandothers.[13]StallmanwroteanewC
frontendfortheLivermorecompiler,butthenrealizedthatitrequiredmegabytesofstackspace,an
impossibilityona68000Unixsystemwithonly64KB,andconcludedhewouldhavetowriteanewcompiler
fromscratch.[12]NoneofthePastelcompilercodeendedupinGCC,thoughStallmandidusetheCfrontend
hehadwritten.[12]
GCCwasfirstreleasedMarch22,1987,availablebyFTPfromMIT.[14]Stallmanwaslistedastheauthorbut
citedothersfortheircontributions,includingJackDavidsonandChristopherFraserfortheideaofusingRTLas
anintermediatelanguage,PaulRubinforwritingmostofthepreprocessorandLeonardTowerfor"partsofthe
parser,RTLgenerator,RTLdefinitions,andoftheVaxmachinedescription."[15]Describedasthe"firstfree
softwarehit"bySalus,theGNUcompilerarrivedjustatthetimewhenSunMicrosystemswasunbundlingits
developmenttoolsfromitsoperatingsystem,sellingthemseparatelyatahighercombinedpricethanthe
previousbundle,whichledmanyofSun'suserstobuyordownloadGCCinsteadofthevendor'stools.[16]By
1990,GCCsupportedthirteencomputerarchitectures,wasoutperformingseveralvendorcompilers,was
shippedbyDataGeneralandNeXTwiththeirworkstationsandwasusedbyLotusDevelopment
Corporation.[17]
AsGCCwaslicensedundertheGPL,programmerswantingtoworkinotherdirectionsparticularlythose
writinginterfacesforlanguagesotherthanCwerefreetodeveloptheirownforkofthecompiler,provided
theymeettheGPL'sterms,includingitsrequirementstodistributesourcecode.Multipleforksprovedinefficient
andunwieldy,however,andthedifficultyingettingworkacceptedbytheofficialGCCprojectwasgreatly
frustratingformany.[18]TheFSFkeptsuchclosecontrolonwhatwasaddedtotheofficialversionofGCC2.x
thatGCCwasusedasoneexampleofthe"cathedral"developmentmodelinEricS.Raymond'sessayThe
CathedralandtheBazaar.
In1997,agroupofdevelopersformedExperimental/EnhancedGNUCompilerSystem(EGCS)tomerge
severalexperimentalforksintoasingleproject.[18][19]ThebasisofthemergerwasaGCCdevelopment
snapshottakenbetweenthe2.7and2.81releases.Projectsmergedincludedg77(Fortran),PGCC(P5
PentiumoptimizedGCC),manyC++improvements,andmanynewarchitecturesandoperatingsystem
variants.[20]EGCSdevelopmentprovedconsiderablymorevigorousthanGCCdevelopment,somuchsothat
theFSFofficiallyhalteddevelopmentontheirGCC2.xcompiler,blessedEGCSastheofficialversionofGCC
andappointedtheEGCSprojectastheGCCmaintainersinApril1999.WiththereleaseofGCC2.95inJuly
1999thetwoprojectswereonceagainunited.

GCChassincebeenmaintainedbyavariedgroupofprogrammersfromaroundtheworldunderthedirectionof
asteeringcommittee.[21]Ithasbeenportedtomorekindsofprocessorsandoperatingsystemsthananyother
compiler.[22]

Design
GCC'sexternalinterfacefollowsUnixconventions.
Usersinvokealanguagespecificdriverprogram(gcc
forC,g++forC++,etc.),whichinterpretscommand
arguments,callstheactualcompiler,runstheassembler
ontheoutput,andthenoptionallyrunsthelinkerto
produceacompleteexecutablebinary.
Eachofthelanguagecompilersisaseparateprogram
thatreadssourcecodeandoutputsmachinecode.All
haveacommoninternalstructure.Aperlanguagefront
endparsesthesourcecodeinthatlanguageand
producesanabstractsyntaxtree("tree"forshort).
Theseare,ifnecessary,convertedtothemiddleend's
inputrepresentation,calledGENERICformthemiddle
endthengraduallytransformstheprogramtowardsits
finalform.Compileroptimizationsandstaticcode

ToobtainastableABI,likee.g.theLinuxStandard
Baseaimstoprocure,theCompilerversionis
important.

analysistechniques(suchasFORTIFY_SOURCE,[23]acompilerdirectivethatattemptstodiscoversome
bufferoverflows)areappliedtothecode.Theseworkonmultiplerepresentations,mostlythearchitecture
independentGIMPLErepresentationandthearchitecturedependentRTLrepresentation.Finally,machinecode
isproducedusingarchitecturespecificpatternmatchingoriginallybasedonanalgorithmofJackDavidsonand
ChrisFraser.
GCCwaswrittenprimarilyinCexceptforpartsoftheAdafrontend.Thedistributionincludesthestandard
librariesforAda,C++,andJavawhosecodeismostlywritteninthoselanguages.[24]Onsomeplatforms,the
distributionalsoincludesalowlevelruntimelibrary,libgcc,writteninacombinationofmachineindependentC
andprocessorspecificmachinecode,designedprimarilytohandlearithmeticoperationsthatthetarget
processorcannotperformdirectly.[25]
InMay2010,theGCCsteeringcommitteedecidedtoallowuseofaC++compilertocompileGCC.[3]The
compilerwasintendedtobewritteninCplusasubsetoffeaturesfromC++.Inparticular,thiswasdecidedso
thatGCC'sdeveloperscouldusethedestructorsandgenericsfeaturesofC++.[26]
InAugust2012,theGCCsteeringcommitteeannouncedthatGCCnowusesC++asitsimplementation
language.[27]ThismeansthattobuildGCCfromsources,aC++compilerisrequiredthatunderstandsISO/IEC
C++03standard.

Frontends
Eachfrontendusesaparsertoproducethesyntaxtreeabstractionofagivensourcefile.Duetothesyntaxtree
abstraction,sourcefilesofanyofthedifferentsupportedlanguagescanbeprocessedbythesamebackend.
GCCstartedoutusingLALRparsersgeneratedwithBison,butgraduallyswitchedtohandwrittenrecursive

descentparsersforC++in2004,[28]andforCandObjectiveCin2006.[29]Currentlyallfrontendsusehand
writtenrecursivedescentparsers.
Untilrecently,thetreerepresentationoftheprogramwasnotfullyindependentoftheprocessorbeingtargeted.
Themeaningofatreewassomewhatdifferentfordifferentlanguagefrontends,andfrontendscouldprovide
theirowntreecodes.ThiswassimplifiedwiththeintroductionofGENERICandGIMPLE,twonewformsof
languageindependenttreesthatwereintroducedwiththeadventofGCC4.0.GENERICismorecomplex,
basedontheGCC3.xJavafrontend'sintermediaterepresentation.GIMPLEisasimplifiedGENERIC,in
whichvariousconstructsareloweredtomultipleGIMPLEinstructions.TheC,C++andJavafrontends
produceGENERICdirectlyinthefrontend.Otherfrontendsinsteadhavedifferentintermediaterepresentations
afterparsingandconvertthesetoGENERIC.
Ineithercase,thesocalled"gimplifier"thenconvertsthismorecomplexformintothesimplerSSAbased
GIMPLEformthatisthecommonlanguageforalargenumberofpowerfullanguageandarchitecture
independentglobal(functionscope)optimizations.

GENERICandGIMPLE
GENERICisanintermediaterepresentationlanguageusedasa"middleend"whilecompilingsourcecodeinto
executablebinaries.Asubset,calledGIMPLE,istargetedbyallthefrontendsofGCC.
ThemiddlestageofGCCdoesallofthecodeanalysisandoptimization,workingindependentlyofboththe
compiledlanguageandthetargetarchitecture,startingfromtheGENERIC[30]representationandexpandingit
toregistertransferlanguage(RTL).TheGENERICrepresentationcontainsonlythesubsetoftheimperative
programmingconstructsoptimizedbythemiddleend.
IntransformingthesourcecodetoGIMPLE,[31]complexexpressionsaresplitintoathreeaddresscodeusing
temporaryvariables.ThisrepresentationwasinspiredbytheSIMPLErepresentationproposedintheMcCAT
compiler[32]byLaurieJ.Hendren[33]forsimplifyingtheanalysisandoptimizationofimperativeprograms.

Optimization
Optimizationcanoccurduringanyphaseofcompilationhowever,thebulkofoptimizationsareperformedafter
thesyntaxandsemanticanalysisofthefrontendandbeforethecodegenerationofthebackendthusa
common,eventhoughsomewhatcontradictory,nameforthispartofthecompileristhe"middleend."
TheexactsetofGCCoptimizationsvariesfromreleasetoreleaseasitdevelops,butincludesthestandard
algorithms,suchasloopoptimization,jumpthreading,commonsubexpressionelimination,instructionscheduling,
andsoforth.TheRTLoptimizationsareoflessimportancewiththeadditionofglobalSSAbasedoptimizations
onGIMPLEtrees,[34]asRTLoptimizationshaveamuchmorelimitedscope,andhavelesshighlevel
information.
Someoftheseoptimizationsperformedatthislevelincludedeadcodeelimination,partialredundancy
elimination,globalvaluenumbering,sparseconditionalconstantpropagation,andscalarreplacementof
aggregates.Arraydependencebasedoptimizationssuchasautomaticvectorizationandautomaticparallelization
arealsoperformed.Profileguidedoptimizationisalsopossible.[35]

Backend

ThebehaviorofGCC'sbackendispartlyspecifiedbypreprocessormacrosandfunctionsspecifictoatarget
architecture,forinstancetodefineitsendianness,wordsize,andcallingconventions.Thefrontpartoftheback
endusesthesetohelpdecideRTLgeneration,soalthoughGCC'sRTLisnominallyprocessorindependent,the
initialsequenceofabstractinstructionsisalreadyadaptedtothetarget.Atanymoment,theactualRTL
instructionsformingtheprogramrepresentationhavetocomplywiththemachinedescriptionofthetarget
architecture.
ThemachinedescriptionfilecontainsRTLpatterns,alongwithoperandconstraints,andcodesnippetstooutput
thefinalassembly.TheconstraintsindicatethataparticularRTLpatternmightonlyapply(forexample)to
certainhardwareregisters,or(forexample)allowimmediateoperandoffsetsofonlyalimitedsize(e.g.12,16,
24,bitoffsets,etc.).DuringRTLgeneration,theconstraintsforthegiventargetarchitecturearechecked.In
ordertoissueagivensnippetofRTL,itmustmatchone(ormore)oftheRTLpatternsinthemachine
descriptionfile,andsatisfytheconstraintsforthatpatternotherwise,itwouldbeimpossibletoconvertthefinal
RTLintomachinecode.
Towardstheendofcompilation,validRTLisreducedtoastrictforminwhicheachinstructionreferstoreal
machineregistersandapatternfromthetarget'smachinedescriptionfile.FormingstrictRTLisacomplicated
taskanimportantstepisregisterallocation,whererealhardwareregistersarechosentoreplacetheinitially
assignedpseudoregisters.Thisisfollowedbya"reloading"phaseanypseudoregistersthatwerenotassigned
arealhardwareregisterare'spilled'tothestack,andRTLtoperformthisspillingisgenerated.Likewise,offsets
thataretoolargetofitintoanactualinstructionmustbebrokenupandreplacedbyRTLsequencesthatwill
obeytheoffsetconstraints.
Inthefinalphase,themachinecodeisbuiltbycallingasmallsnippetofcode,associatedwitheachpattern,to
generatetherealinstructionsfromthetarget'sinstructionset,usingthefinalregisters,offsets,andaddresses
chosenduringthereloadphase.Theassemblygenerationsnippetmaybejustastring,inwhichcaseasimple
stringsubstitutionoftheregisters,offsets,and/oraddressesintothestringisperformed.Theassembly
generationsnippetmayalsobeashortblockofCcode,performingsomeadditionalwork,butultimately
returningastringcontainingthevalidassemblycode.

Features
SomefeaturesofGCCinclude:
Linktimeoptimizationoptimizesacrossobjectfileboundariestodirectlyimprovethelinkedbinary.Link
timeoptimizationreliesonanintermediatefilecontainingtheserializationofsomeGimplerepresentation
includedintheobjectfile.Thefileisgeneratedalongsidetheobjectfileduringsourcecompilation.Each
sourcecompilationgeneratesaseparateobjectfileandlinktimehelperfile.Whentheobjectfilesare
linked,thecompilerisexecutedagainandusesthehelperfilestooptimizecodeacrosstheseparately
compiledobjectfiles.
PluginscanextendtheGCCcompilerdirectly.[36]Pluginsallowastockcompilertobetailoredtospecific
needsbyexternalcodeloadedasplugins.Forexample,pluginscanadd,replace,orevenremove
middleendpassesoperatingonGimplerepresentations.[37]SeveralGCCpluginshavealreadybeen
published,notablytheGCCPythonPlugin,whichlinksagainstlibpython,andallowsonetoinvoke
arbitraryPythonscriptsfrominsidethecompiler.TheaimistoallowGCCpluginstobewrittenin
Python.TheMELTpluginprovidesahighlevelLisplikelanguagetoextendGCC.[38]

Languages

Thestandardcompilerreleasessince4.6includefrontendsforC(gcc),C++(g++),ObjectiveC,Objective
C++,Fortran(gfortran),Java(gcj),Ada(GNAT),andGo(gccgo).[39]Apopularparallellanguage
extension,OpenMP,isalsosupported.Version5.0addedsupportforCilkPlus,andsinceversion5.1,thereis
preliminarysupportforOpenACC.[40]
TheFortranfrontendwasg77beforeversion4.0,whichonlysupportsFORTRAN77.Innewerversions,g77
isdroppedinfavorofthenewGNUFortranfrontend(retainingmostofg77'slanguageextensions)that
supportsFortran95andlargepartsofFortran2003andFortran2008aswell.AfrontendforCHILLwas
droppedduetoalackofmaintenance.[41]
ThirdpartyfrontendsexistforPascal(gpc),Modula2,Modula3,PL/I,D(gdc),[42]andVHDL(ghdl).
Afewexperimentalbranchesexisttosupportadditionallanguages,suchastheGCCUPCcompiler[43]for
UnifiedParallelC.

Architectures
GCCtargetprocessorfamiliesasofversion4.3include:
Alpha
PARISC
ARM
PDP11
AVR
PowerPC
Blackfin
R8C/M16C/M32C
Epiphany(GCC4.8)
SPARC
H8/300
SPU
HC12
SuperH
IA32(x86)
System/390/zSeries
IA64(IntelItanium)
VAX
MIPS
x8664
Motorola68000
PARISC
Lesserknowntargetprocessorssupportedinthestandardreleasehaveincluded:
68HC11
MILSTD1750A
A29K
MMIX
CR16
MN10200
C6x
MN10300
D30V
Motorola88000
DSP16xx
NS32K
ETRAXCRIS
ROMP
FR30
RL78
FRV
Stormy16
Inteli960
V850
IP2000
Xtensa
M32R
MCORE
MILSTD1750A
AdditionalprocessorshavebeensupportedbyGCCversionsmaintainedseparatelyfromtheFSFversion:

CortusAPS3
ARC
AVR32
C166andC167
D10V
EISC
eSiRISC
Hexagon[44]
LatticeMico32
LatticeMico8
MeP
MicroBlaze
Motorola6809
MSP430
NECSXarchitecture[45]

NiosIIandNios
OpenRISC
PDP10
PIC24/dsPIC
PIC32
Propeller
RISCV
Saturn(HP48XGCC)
System/370
TIGCC(m68kvariant)
TriCore
Z8000
ZPU

ThegcjJavacompilercantargeteitheranativemachinelanguagearchitectureortheJavaVirtualMachine's
Javabytecode.[46]WhenretargetingGCCtoanewplatform,bootstrappingisoftenused.

Development
ThecurrentstableversionofGCCis5.3,whichwasreleasedonDecember4,2015.[47]
Asofversion4.8,GCCisimplementedinC++.[48]
GCC4.6supportsmanynewObjectiveCfeatures,suchasdeclaredandsynthesizedproperties,dotsyntax,
fastenumeration,optionalprotocolmethods,method/protocol/classattributes,classextensionsandanewGNU
ObjectiveCruntimeAPI.ItalsosupportstheGoprogramminglanguageandincludesthelibquadmath
library,whichprovidesquadrupleprecisionmathematicalfunctionsontargetssupportingthe__float128
datatype.ThelibraryisusedtoprovidetheREAL(16)typeinGNUFortranonsuchtargets.
GCCusesmanystandardtoolsinitsbuild,includingPerl,Flex,Bison,andothercommontools.Inadditionit
currentlyrequiresthreeadditionallibrariestobepresentinordertobuild:GMP,MPC,andMPFR.
Thetrunkconcentratesthemajorpartofthedevelopmentefforts,wherenewfeaturesareimplementedand
tested.

License
TheGCCruntimeexceptionpermitscompilationofproprietaryandfreesoftwareprogramswithGCCand
usageoffreesoftwareplugins.[49]

Uses
SeveralcompaniesmakeabusinessoutofsupplyingandsupportingGCCportstovariousplatforms.[50]

Seealso

Listofcompilers
MinGW

References
1."GCCReleases".GNUProject.Retrieved20061227.
2."GCCReleasesGNUProjectFreeSoftwareFoundation(FSF)".
3."GCCallowsC++tosomedegree".TheH.June1,2010.
4."GCCRuntimeLibraryException".Retrieved20130228.
5."ProgrammingLanguagesSupportedbyGCC".GNUProject.Retrieved20140623.
6."SymbianGCCImprovementProject".Retrieved20071108.
7."LinuxBoardSupportPackages".Retrieved20080807.
8."settingupgccasacrosscompiler".ps2stuff.20020608.Archivedfromtheoriginalon11December2008.
Retrieved20081212.
9."sh4g++guide".Archivedfromtheoriginalon20021220.Retrieved20081212.
10.http://llvm.org/Users.html
11.vonHagen,William(2006).TheDefinitiveGuidetoGCC.DefinitiveGuides(2nded.).Apress.p.XXVII.
ISBN9781430202196."SohewrotetoVUCK'sauthoraskingifGNUcoulduseit.Evidently,VUCK's
developerwasuncooperative,respondingthattheuniversitywasfreebutthatthecompilerwasnot."
12.Stallman,Richard(September20,2011)."AbouttheGNUProject".TheGNUProject.RetrievedOctober9,
2011.
13.Puzo,JeromeE.,ed.(February1986)."Gnu'sZoo".GNU'SBulletin(FreeSoftwareFoundation)1(1).
Retrieved20070811.
14.RichardM.Stallman(forwardedbyLeonardH.Tower,Jr.)(March22,1987)."GNUCcompilerbetatest
release".Newsgroup:comp.lang.c.RetrievedOctober9,2011.
15.Stallman,RichardM.(June22,2001)[Firstpublished1988],"ContributorstoGNUCC",UsingandPorting
theGNUCompilerCollection(GCC),FreeSoftwareFoundation,Inc.,p.7,retrievedJune18,2015.
16.Salus,PeterH.(2005)."Chapter10.SUNandgcc".TheDaemon,theGnuandthePenguin.Groklaw.
17.Garfinkel,SimsonL.(6August1990)."GetreadyforGNUsoftware".Computerworld.
18.HenkelWallace,David(August15,1997),AnewcompilerprojecttomergetheexistingGCCforks,retrieved
May25,2012.
19."PentiumCompilerFAQ".
20."TheShortHistoryofGCCdevelopment".
21."GCCSteeringCommittee".
22."LinuxInformationProject".LINFO.Retrieved20100427."TheGCChasbeenportedto(i.e.,modifiedtorun
on)morethan60platforms,whichismorethanforanyothercompiler."
23."SecurityFeatures:CompileTimeBufferChecks(FORTIFY_SOURCE)".fedoraproject.org.Retrieved
20090311.
24."languagesusedtomakeGCC".
25."GCCInternals".GCC.org.RetrievedMarch1,2010.
26."AnemailbyRichardStallmanonemacsdevel".
27."GCC4.8ReleaseSeries:Changes,NewFeatures,andFixes".RetrievedOctober4,2013.
28."GCC3.4ReleaseSeriesChanges,NewFeatures,andFixes".
29."GCC4.1ReleaseSeriesChanges,NewFeatures,andFixes".
30."GENERICinGNUCompilerCollectionInternals".
31."GIMPLEinGNUCompilerCollectionInternals".
32.McCAT(https://web.archive.org/web/20040812030043/wwwacaps.cs.mcgill.ca/info/McCAT/McCAT.html)at
theWaybackMachine(archivedAugust12,2004)
33."LaurieJ.Hendren".
34.Novillo,Diego(December2004)."FromSourcetoBinary:TheInnerWorkingsofGCC".RedHatMagazine.
35."Profileguidedoptimizationisdemonstratedhere".
36."Plugins".GCConlinedocumentation.RetrievedJuly8,2013.
37.Starynkevitch,Basile."GCCpluginsthrutheMELTexample"(PDF).Retrieved20140410.
38."AboutGCCMELT".RetrievedJuly8,2013.
39."GCCFrontEnds".gnu.org.RetrievedNovember25,2011.
40."GCC5ReleaseSeries".

41."PATCH]Removechill".gcc.gnu.org.RetrievedJuly29,2010.
42."gdcprojectonbitbucket".RetrievedJuly3,2010.
43."GCCUPC(GCCUnifiedParallelC)".www.gccupc.org.20060220.Retrieved20090311.Externallinkin
|publisher=(help)
44."HexagonProjectWiki".
45."sxgcc:portgcctonecsxvectorcpu".
46."TheGNUCompilerfortheJavaProgrammingLanguage".Retrieved20100422.
47."GCC5.3Released".
48."GCC4.8ReleaseSeries:Changes,NewFeatures,andFixes".
49."GCCRuntimeException".FSF.Retrieved20140410.
50."FSFServiceDirectory".

Furtherreading
UsingtheGNUCompilerCollection(GCC)(https://gcc.gnu.org/onlinedocs/gcc4.4.2/gcc/),Free
SoftwareFoundation,2008.
GNUCompilerCollection(GCC)Internals(https://gcc.gnu.org/onlinedocs/gccint/),FreeSoftware
Foundation,2008.
AnIntroductiontoGCC(http://www.networktheory.co.uk/gcc/intro/),NetworkTheoryLtd.,2004
(RevisedAugust2005).ISBN0954161793.
ArthurGriffith,GCC:TheCompleteReference.McGrawHill/Osborne,2002.ISBN0072224053.

Externallinks
Official
Officialwebsite(http://gcc.gnu.org)
GCCReleaseTimeline
(https://www.gnu.org/software/gcc/releases.html)
GCCDevelopmentPlan
(https://www.gnu.org/software/gcc/develop.html)

WikimediaCommonshas
mediarelatedtoGCC.
Wikibookshasabookon
thetopicof:GNUC
CompilerInternals

Other
GCCoptimisations(http://hanoo.org/index.php?article=gccoptimisations)
CollectionofGCC4.0.2architectureandinternalsdocuments(http://www.cse.iitb.ac.in/grc/)atI.I.T.
Bombay
Kerner,SeanMichael(March2,2006)."NewGCCHeavyonOptimization".internetnews.com
Kerner,SeanMichael(April22,2005)."OpenSourceGCC4.0:Older,Faster".internetnews.com
FromSourcetoBinary:TheInnerWorkingsofGCC
(http://www.redhat.com/magazine/002dec04/features/gcc/),byDiegoNovillo,RedHatMagazine,
December2004
A2003paperonGENERICandGIMPLE
(ftp://gcc.gnu.org/pub/gcc/summit/2003/GENERIC%20and%20GIMPLE.pdf)
MarketingCygnusSupport(http://www.toad.com/gnu/cygnus/index.html),anessaycoveringGCC
developmentforthe1990s,with30monthlyreportsforinthe"InsideCygnusEngineering"sectionnear
theend
EGCS1.0announcement(http://oldhome.schmorp.de/egcs.html)
EGCS1.0featureslist(https://gcc.gnu.org/egcs1.0/features.html)

FearofForking(http://linuxmafia.com/faq/Licensing_and_Law/forking.html),anessaybyRickMoen
recordingsevenwellknownforks,includingtheGCC/EGCSone
Retrievedfrom"https://en.wikipedia.org/w/index.php?title=GNU_Compiler_Collection&oldid=705690124"
Categories: 1987software Ccompilers C++compilers Compilers Crossplatformfreesoftware
Fortrancompilers Freecompilersandinterpreters GNUProjectsoftware Javadevelopmenttools
Pascalcompilers SoftwareusingtheGPLlicense Unixprogrammingtools
Thispagewaslastmodifiedon19February2016,at00:05.
TextisavailableundertheCreativeCommonsAttributionShareAlikeLicenseadditionaltermsmay
apply.Byusingthissite,youagreetotheTermsofUseandPrivacyPolicy.Wikipediaisaregistered
trademarkoftheWikimediaFoundation,Inc.,anonprofitorganization.

Вам также может понравиться