www.wikidata.uk-ua.nina.az
Nabir kompilya toriv GNU GNU Compiler Collection GCC nabir kompilyatoriv dlya riznih mov programuvannya GCC vilne programne zabezpechennya rozroblene Fondom Vilnih Program pid licenziyeyu GNU GPL ta GNU LGPL i ye klyuchovoyu skladovoyu naboru znaryad rozrobki GNU GNU development toolchain Ce standartnij kompilyator dlya vilnih Unix podibnih operacijnih sistem i deyakih propriyetarnih sistem sho z nih rozvinulis napriklad Mac OS X GNU Compiler CollectionGCC pid keruvannyam komandnogo ryadkaTip nabir kompilyatorivRozrobnik The GNU ProjectPershij vipusk 23 travnya 1987 1 Stabilnij vipusk 12 1 6 travnya 2022 16 misyaciv tomu 2022 05 06 Platforma kros platformova programaOperacijna sistema dekilkaMova programuvannya C C AdaDostupni movi anglijska rosijska ta bagato inshihStan rozrobki AktivnijLicenziya GPLRepozitorij gcc gnu org git gcc gitVebsajt gcc gnu org GNU Compiler Collection u VikishovishiSpochatku nazivavsya GNU Kompilyator Si oskilki pidtrimuvav lishe odnu movu programuvannya C Piznishe buv rozshirenij dlya pidtrimki C Fortran Java kompilyator GCJ Ada D ta inshih Zmist 1 Oglyad 2 Movi 3 Arhitekturi 4 Struktura 5 Etapi kompilyaciyi programi movoyu S na GCC 5 1 Preprocesor 5 2 Kompilyator 5 3 Zbirannya 5 4 Linkuvannya 6 Znevadzhennya program skompilovanih za dopomogoyu GCC 7 Instrumentalni obolonki 8 Vidznaki 9 Posilannya 9 1 Literatura 10 Vinoski 11 Divis takozhOglyad RedaguvatiGCC zapochatkovanij Richardom Stolmenom u 1985 roci yak kompilyator dlya proyektu GNU Project abi mati kompilyator yakij ye vilnim programnim zabezpechennyam Jogo rozrobkoyu tisno opikuvavsya Fond Vilnih Program Persha versiya vipushena navesni 1987 na kinec 1987 roku z yavilasya pidtrimka C GCC buv pershim nezalezhno stvorenim ne bazuvavsya na preprocesori CFront B yarna Straustrupa ta pershim vlasne kompilyatorom a ne preprocesorom u C movi C U 1997 grupa rozrobnikiv nezadovolena povilnim tempom i zakritistyu oficijnoyi rozrobki GCC stvorila proyekt EGCS Experimental Enhanced GNU Compiler System Eksperimentalna Pokrashena Zbirka Kompilyatoriv GNU yakij ob yednav dekilka eksperimentalnih vidgaluzhen GCC Rozrobka EGCS z chasom viyavilas bilsh zhittyevoyu nizh GCC i u kvitni 1999 roku EGCS ogoloshena oficijnoyu versiyeyu GCC GCC teper rozroblyayetsya shirokoyu grupoyu rozrobnikiv zi vsogo svitu Vona perenesena na bilshu kilkist tipiv procesoriv ta operacijnih sistem nizh bud yakij inshij kompilyator GCC ye oficijnim kompilyatorom GNU vklyuchno iz GNU Linux prijnyatij yak osnovnij kompilyator i dlya inshih operacijnih sistem takih yak varianti BSD Mac OS X NeXTSTEP i BeOS Versiya GCC pid Microsoft Windows zabezpechuyetsya proyektami MinGW ta Cygwin pid DOS proyektom DJGPP lishe C C Movi RedaguvatiVersiya 4 0 0 vipushena 20 kvitnya 2005 u tipovij zbirci pidtrimuye nastupni movi Ada GCC dlya Ada takozh vidomij yak GNAT Si C GCC dlya C takozh vidomij yak G Fortran GCC dlya Fortranu takozh vidomij yak GFortran Java GCC dlya Java takozh vidomij yak GCJ Vidalenij pochinayuchi z versiyi GCC 7 1 3 Objective C Go GCC dlya Go abo gccgo pochinayuchi z versiyi 4 6 D GCC D pochinayuchi z versiyi 9 1 Pidtrimka CHILL pripinena cherez nedostatnyu aktivnist rozrobki Dodatkovi proyekti pidtrimuyut movi programuvannya Pascal Modula 2 Modula 3 Mercury VHDL PL I ta Objective C Arhitekturi RedaguvatiGCC versiyi 4 1 stvoryuye kod dlya takih procesornih arhitektur Alpha ARM Blackfin H8 300 System 370 System 390 x86 ta AMD64 IA 64 Itanium Motorola 68000 Motorola 88000 MIPS PA RISC PDP 11 PowerPC SuperH SPARC VAX Renesas R8C M16C M32C MorphoSys Mensh vidomi sered pidtrimuvanih procesoriv vklyuchayut A29K ARC Atmel AVR C4x CRIS D30V DSP16xx FR 30 FR V Intel i960 IP2000 M32R 68HC11 MCORE MMIX MN10200 MN10300 NS32K ROMP Stormy16 V850 i Xtensa Okremimi proyektami pidtrimuyetsya D10V PDP 10 i Z8000 Struktura RedaguvatiZovnishnij interfejs GCC ye standartom dlya kompilyatoriv na platformi Unix Koristuvach viklikaye upravlyayuchu programu yaka nazivayetsya gcc Vona interpretuye argumenti komandnogo ryadka viznachaye i zapuskaye dlya kozhnogo vhidnogo fajlu svoyi kompilyatori potribnoyi movi zapuskaye yaksho neobhidno asembler i komponuvalnik Kompilyator kozhnoyi movi ye okremoyu programoyu yaka otrimuye pochatkovij tekst i porodzhuye vihid na movi asemblera Vsi kompilyatori mayut zagalnu vnutrishnyu strukturu front end yakij provodit sintaksichnij rozbir i porodzhuye abstraktne sintaksichne derevo i back end yakij konvertuye derevo v Register Transfer Language RTL vikonuye rizni optimizaciyi potim porodzhuye programu na movi asemblera vikoristovuyuchi arhitekturno zalezhne zistavlennya zi zrazkom GCC majzhe povnistyu napisanij na Si hocha znachna chastina front end dlya Adi napisana na Ada V travni 2010 Kerivnij komitet GCC virishiv dozvoliti vikoristovuvati C kompilyator dlya kompilyaciyi GCC V serpni 2012 roku komitet dozvoliv takozh vikoristovuvati C movu dlya rozrobki GCC i deyaki skladni strukturi danih napr hesh tablici itp buli perepisani z dopomogoyu C z vikoristannyam shabloniv Dlya kompilyaciyi GCC zaraz vimagayetsya kompilyator movi C sho pidtrimuye shonajmenshe ISO IEC C 03 standart Etapi kompilyaciyi programi movoyu S na GCC RedaguvatiKompilyaciya programi na movi C za dopomogoyu gcc peredbachaye taki poslidovni etapi preprocesor prepocessing kompilyaciya compilation zbirannya assembly linkuvannya linking Rozglyanemo kozhen z danih etapiv na prikladi programi hello c Zvernit uvagu sho dlya kompilyaciyi hello c nema potrebi viklikati kozhnu iz nizhche rozglyanutih komand okremo Usi programi avtomatichno viklikaye kompilyator i yih vikliki mozhna vidslidkovuvati dodavshi opciyu v do komandi gcc Rozglyanuvshi kozhnu komandu okremo mi budemo krashe rozumiti robotu kompilyatora Poryad z tim sho hello ye dosit prostoyu programoyu u nij vikoristano zovnishni biblioteki tomu pid chas kompilyaciyi danoyi programi budut projdeni usi vishe vkazani etapi Preprocesor Redaguvati Pershim etapom kompilyaciyi ye viklik preprocesora Preprocesor rozgortaye pidstavlyaye znachennya u makrosi ta dodaye u hello c kod neobhidnih header fajliv Dlya cogo gcc viklikaye taku komandu cpp hello c gt hello i Rezultatom vikonannya danoyi komandi ye fajl hello i u yakomu mistitsya source kod z rozgornutimi makrosami i vstavlenimi header fajlami Zvernit uvagu sho vihidni fajli roboti preprocesora mayut rozshirennya i dlya program na movi S i ii dlya program na movi S Po zamovchuvannyu hello i ta inshi promizhni fajli pislya kompilyaciyi ne bude zberezheno na disku prote ce mozhlivo zminiti vkazavshi opciyu save temps obj pid chas vikliku gcc tobtogcc save temps obj c hello c Kompilyator Redaguvati Nastupnim etapom ye vlasne kompilyaciya vihidnogo fajlu preprocesora hello i Rezultatom cogo etapu ye fajl hello s U danomu fajli mistitsya kod na movi assembler Fajl hello s ye promizhnim tomu kompilyator po zamovchuvannyu jogo vidalyaye Shob zberegti hello s i pereglyanuti jogo vmist neobhidno vikonati taku komandu gcc S hello i Rezultatom ciyeyi komandi ye fajl hello s Os yak viglyadaye hello s dlya procesora z arhitekturoyu x86 64 file hello c section rodata LC0 string Hello World text globl main type main functionmain LFB0 cfi startprocpushq rbp cfi def cfa offset 16 cfi offset 6 16movq rsp rbp cfi def cfa register 6movl LC0 edicall putspopq rbp cfi def cfa 7 8ret cfi endproc LFE0 size main main ident GCC Ubuntu 4 8 4 2ubuntu1 14 04 1 4 8 4 Zbirannya Redaguvati Metoyu danogo etapu ye peretvorennya kodu movoyu asembler na mashinnij kod i generaciya object fajlu Yaksho u kodi ye vikliki zovnishnih funkcij asembler zalishaye adresi pochatku cih zovnishnih funkcij neviznachenimi Yih znachennya budut zapovneni komponuvalnikom na nastupnomu etapi kompilyaciyi Dlya vikliku asemblera as hello s o hello o Yak mi bachimo vihidnij fajl komandi vkazano za dopomogoyu opciyi o Rezultatom roboti asemblera ye fajl hello o sho mistit programu hello u viglyadi mashinnih instrukcij de takozh ye poki sho neviznachena adresa undefined reference pochatku funkciyi printf Linkuvannya Redaguvati Ostannim etapom kompilyaciyi ye linkuvannya linking ob yektnogo fajlu dlya stvorennya executable fajlu vlasne programi hello Na praktici executable fajli potrebuyut bagatoh zovnishnih funkcij i dinamichnih run time bibliotek S Takim chinom spravzhni komandi linkuvannya kotri vnutrishno avtomatichno vikonuye gcc ye dosit skladnimi Takim chinom povna komanda dlya linkuvannya hello ld dynamic linker lib ld linux so 2 usr lib crt1 o usr lib crti o usr lib gcc lib i686 3 3 1 crtbegin o L usr lib gcc lib i686 3 3 1 hello o lgcc lgcc eh lc lgcc lgcc eh usr lib gcc lib i686 3 3 1 crtend o usr lib crtn o Dana komanda linkuye object fajl hello o iz standartnoyu bibliotekoyu C i stvoryuye vihidnij executable fajl hello Dlya zapusku hello hello Takim chinom vikonannya komandi gcc o hello hello c mozhlivo zobraziti tak hello c gt PREPROCESSOR cpp gt hello i gt COMPILER cc gt hello s gt ASSEMBLER as gt hello o gt LINKER ld gt helloZnevadzhennya program skompilovanih za dopomogoyu GCC RedaguvatiGolovnim instrumentom dlya znevadzhennya program skompilovanih za dopomogoyu GCC ye GNU Debugger gdb Isnuyut takozh vuzkospecializovani zasobi dlya znevadzhuvannya Valgrind dlya poshuku vitokiv pam yati GNU Profiler gprof vikoristovuyetsya dlya togo shob viznachiti skilki chasu jde na vikonannya tiyeyi abo inshoyi chastini programi yak chasto viklikayutsya ti abo inshi proceduri dlya vikoristannya gprof neobhidno kompilyuvati programu iz specialnimi opciyami dlya vklyuchennya profilizaciyi Instrumentalni obolonki RedaguvatiKompilyatori mayut desyatki opcij i koristuvatisya nimi napryamu ne zovsim zruchno Dlya sproshennya roboti vikoristovuyut obolonki abo integrovani seredovisha rozrobki Code Blocks Dev C wxDev C Eclipse KDevelop NetBeans Vidznaki RedaguvatiU 2014 Asociaciya obchislyuvalnoyi tehniki ACM najavtoritetnisha mizhnarodna organizaciya v oblasti komp yuternih sistem prisudila proyektu GCC premiyu za vnesok u rozvitok mov programuvannya SIGPLAN Programming Languages Software Award 4 Premiya prisudzhuyetsya za znachnij vpliv na pov yazani z movami programuvannya doslidzhennya realizaciyi tehnologij i instrumenti Posilannya Redaguvatistorinka GCC Arhivovano 11 sichnya 2012 u Wayback Machine Kerivnictvo v4 0 Arhivovano 27 kvitnya 2006 u Wayback Machine Kerivnictvo v3 4 3 Arhivovano 18 chervnya 2006 u Wayback Machine tizhnevi novini nedostupne posilannya z chervnya 2019 GCC Wiki Arhivovano 29 serpnya 2006 u Wayback Machine Literatura Redaguvati Richard M Stallman Using and Porting the GNU Compiler Collection Arhivovano 27 grudnya 2006 u Wayback Machine Free Software Foundation ISBN 0 595 10035 X Richard M Stallman Using Gcc The Gnu Compiler Collection Reference Arhivovano 22 grudnya 2006 u Wayback Machine Free Software Foundation ISBN 1 882114 39 6 Brian J Gough An Introduction to GCC Arhivovano 5 grudnya 2012 u Archive is Network Theory Ltd ISBN 0 9541617 9 3 Arthur Griffith GCC The Complete Reference McGrawHill Osborne ISBN 0 07 222405 3 Vinoski Redaguvati GCC Releases GNU Project Arhiv originalu za 23 chervnya 2013 Procitovano 27 grudnya 2006 https gcc gnu org GCC 7 Release Series Arhiv originalu za 2 veresnya 2020 Procitovano 6 chervnya 2020 Programming Languages Software Award Arhiv originalu za 7 serpnya 2014 Procitovano 14 chervnya 2014 Divis takozh RedaguvatiGCC Summit Sintaksichnij analizator Otrimano z https uk wikipedia org w index php title GNU Compiler Collection amp oldid 40426588