GNU Compiler Collection | |
---|---|
Type | compiler |
Udvikler | GNU projekt |
Skrevet i | C++ |
Operativ system | GNU/Linux [5] og BSD [6] |
Første udgave | 23. maj 1987 [1] |
Hardware platform | på tværs af platforme |
nyeste version |
|
Test version | |
Licens | GNU GPL 3 |
Internet side | gcc.gnu.org _ |
Mediefiler på Wikimedia Commons |
GNU Compiler Collection (almindeligvis forkortet GCC ) er en samling af compilere til forskellige programmeringssprog udviklet som en del af GNU-projektet . GCC er gratis software , distribueret blandt andet af Free Software Foundation (FSF) under betingelserne i GNU GPL og GNU LGPL , og er en nøglekomponent i GNU-værktøjskæden . Det bruges som en standard compiler til gratis UNIX-lignende operativsystemer .
Oprindeligt kaldt GNU C Compiler , den understøttede kun C -sproget . GCC blev senere udvidet til at kompilere kildekoder i programmeringssprog som C++ , Objective- C , Java , Fortran , Ada , Go , GAS og D.
Fra version 4.2.2 skiftede GCC til GPLv3-licensen .
GCC blev startet af Richard Stallman , som implementerede den første version af GCC i 1985 på en ikke-standard og ikke-bærbar dialekt af Pascal ; compileren blev senere omskrevet i C af Leonard Tower og Richard Stallman [7] og udgivet i 1987 [8] som en compiler til GNU-projektet, som i sig selv var fri software. Udviklingen af GCC overvåges af Free Software Foundation [9] .
GCC vedligeholdes i øjeblikket af en gruppe programmører fra hele verden. GCC er førende med hensyn til antallet af processorer og operativsystemer, det understøtter.
Som den officielle GNU -systemkompiler er GCC også masterkompileren til at bygge en række andre operativsystemer; blandt dem er forskellige varianter af Linux og BSD (tidligere clang llvm bruges i øjeblikket) samt ReactOS , Mac OS X , OpenSolaris , NeXTSTEP , BeOS og Haiku .
GCC vælges ofte til at udvikle software, der skal køre på en lang række forskellige hardwareplatforme. Forskelle mellem "native" compilere for hver af hardwareplatformene fører til vanskeligheder med at udvikle kode, der ville blive korrekt kompileret af forskellige compilere, og derudover, når man bruger forskellige compilere, bliver det meget kompliceret at bygge scripts, der skal bygge software til alle hardwareplatforme. Når du bruger GCC til at kompilere kode til forskellige platforme, vil den samme parser blive brugt . Derfor, hvis det lykkedes dig at kompilere programmet til en af målplatformene, så er det højst sandsynligt, at programmet også vil kompilere normalt for andre platforme.
Standardkompileren inkluderer frontends til sprog:
Frontenden til CHILL blev tilføjet tidligere, men blev på grund af utilstrækkelig støtte udelukket fra sættet. Før version 4.0 var front-end for Fortran G77, som kun understøttede FORTRAN 77. I nye versioner blev G77 droppet til fordel for den nye GFortran frontend, som understøtter Fortran 95.
Der er også tredjeparts front-ends til Pascal , Modula-2 , Modula-3 , Mercury , VHDL og PL/I .
Listen over processorer understøttet af GCC (for version 7.1) inkluderer
Mindre kendte processorer understøttet i standardudgivelsen:
Yderligere typer af arkitekturer og processorer, der understøttes af versioner af GCC, men understøttes af tredjeparter (ikke Free Software Foundation):
GCC-frontend er standarden for compilere på UNIX-platformen. Brugeren starter et kontrolprogram kaldet gcc . Den fortolker kommandolinjeargumenterne, bestemmer og starter sine egne compilere til det ønskede sprog for hver inputfil og starter assembleren og linkeren , hvis det er nødvendigt .
Hvert sprogs compiler er et separat program, der tager kildekode og producerer assemblersprog- output . Alle compilere deler en fælles intern struktur: en frontend, der analyserer og genererer et abstrakt syntakstræ , og en bagende, der konverterer træet til Register Transfer Language (RTL), udfører forskellige optimeringer og genererer derefter et assemblersprogsprogram ved hjælp af arkitekturafhængig mønstermatchning .
Før version 4.7.2 blev GCC næsten udelukkende skrevet i C , selvom meget af front-end til Ada blev skrevet i Ada . Siden den 14. august 2012 er udviklingen blevet oversat til C++ [15] , version 4.8 [16] og kræver senere en C++ compiler, der understøtter C++ 2003 til deres montage.
Hovedværktøjet til fejlfinding af programmer kompileret med GCC er GNU Debugger (gdb). Der er også højt specialiserede fejlfindingsværktøjer:
GCC version 4.2.1 var den sidste udgivelse udgivet under GNU General Public License version 2 . Alle efterfølgende versioner er licenseret under GPL version 3 [17] .
Nogle OpenBSD- udviklere , såsom Theo de Raadt og Otto Moerbeek , har kritiseret GCC som "besværlig, buggy, langsom og genererer dårlig kode" [18] . På grund af denne kritiske holdning, og også på grund af den ret restriktive (i forhold til BSD) GPL-licens, hvorunder samlingen af compilere frigives, blev der forsøgt at erstatte GCC i NetBSD og OpenBSD med andre compilere, såsom PCC [19] . Lignende arbejde med at erstatte GCC med Clang er i gang i FreeBSD [20] .
GNU projekt | ||
---|---|---|
Historie | ||
Licenser |
| |
Software _ |
| |
Personligheder |
| |
Andre emner |
|
Gratis og open source software | |
---|---|
Det vigtigste |
|
Fællesskab |
|
Organisationer | |
Licenser | |
Problemer | |
Andet |
|
|