GCC

Software skärmdump:
GCC
Mjukvaruinformation:
Version: 8.2.0 Uppdaterad
Ladda upp dagen: 16 Aug 18
Utvecklare: The GCC Team
Licens: Gratis
Popularitet: 182

Rating: 3.0/5 (Total Votes: 3)

GCC (GNU Compiler Collection) är en open source-kommandoradsprogramvara som är utformad för att fungera som en kompilator för GNU / Linux och BSD-baserade operativsystem. Den innehåller frontändar för många programmeringsspråk, inklusive Objective-C, Go, C ++, Java, C, Ada och Fortran.


Funktioner i ett ögonkast

Med GCC kan du konfigurera, kompilera och installera GNU / Linux-applikationer i Linux eller BSD-operativsystem med bara källprogrammet för respektive program. Användare behöver emellertid inte interagera med kompilatorn, eftersom det görs automatiskt av konfigurationen och gör skript.

Projektet innehåller också bibliotek för olika programmeringsspråk, till exempel libstdc och libgcj, och som i de flesta GNU-program måste den konfigureras innan den kan byggas och installeras på din dator.

Det kan också visa hela sökvägen till ett specifikt bibliotek, mappar i kompilators sökväg, fullständig sökväg till en viss komponent, målbibliotekskatalog, sysroot suffix som används för att hitta rubriker och målets normaliserade GNU-triplet.

Dessutom finns det flera andra alternativ för att överföra vissa kommaseparerade alternativ och argument till assembler, preprocessor och linker, kompilera och montera utan att länka, skapa ett gemensamt bibliotek och många andra.


Utformad för GNU-operativsystemet

Ursprungligen skrivet som huvudkompilator för GNU-operativsystemet, utvecklades GCC (GNU Compiler Collection) för att vara 100% fri programvara och den är som standard installerad på någon Linux-distribution.

Programvaran används också av Open Source-utvecklare för att kompilera sina program. Kommandoraden kommer med flera alternativ, bland annat kan vi nämna möjligheten att visa kompilatorens målprocessor, liksom den relativa sökvägen till OS-bibliotek.


Slutsats

Sammantaget är GCC en av de viktigaste komponenterna i något GNU / Linux-operativsystem. Inte bara att vi inte kan föreställa oss en värld utan det, men GCC är den främsta orsaken till hela Open Source-ekosystemet.

Vad är nytt i den här utgåvan:

  • GCC 7.3 är ett buggfix-frigivning från GCC 7-avdelningen som innehåller viktiga korrigeringar för regressioner och allvarliga buggar i GCC 7.2 med mer än 99 buggar fixade sedan föregående utgåva.
  • Denna release innehåller kodgenereringsalternativ för att mildra Specter Variant 2 (CVE 2017-5715) för x86- och powerpc-målen.

Vad är nytt i version 8.1.0:

  • GCC 7.3 är ett felmeddelande från GCC 7-filialen innehåller viktiga korrigeringar för regressioner och allvarliga fel i GCC 7.2 med mer än 99 buggar fixade sedan föregående utgåva.
  • Denna release innehåller kodgenereringsalternativ för att mildra Specter Variant 2 (CVE 2017-5715) för x86- och powerpc-målen.

Vad är nytt i version:

  • GCC 7.1 är en stor release som innehåller väsentlig ny funktionalitet som inte är tillgänglig i GCC 6.x eller tidigare GCC-utgåvor. C ++ frontend har nu försöksstöd för alla nuvarande C ++ 17 utkast, med alternativet -std = c ++ 1z och -std = gnu ++ 1z, och libstdc ++-biblioteket har det mesta av C ++ 17-utkastet Bibliotekets funktioner implementeras också. Dessa utgåvor innehåller olika förbättringar i den emitterade diagnostiken, inklusive förbättrade platser, platsintervall, förslag på felstavade identifierare, alternativnamn, fix-it-tips och olika nya varningar har lagts till. Optimeringarna har förbättrats, med förbättringar som uppträder i samtliga intra- och interprocessoroptimeringar, länktidsoptimeringar och olika målbackenden, inklusive men inte begränsat till tillägg av butikssamlingspass, kodhissoptimering, loop-splittring och krympning. förpackningsförbättringar. Adress Sanitizer kan nu rapportera användningsområden av variabler efter att ha lämnat deras räckvidd. GCC kan nu konfigureras för OpenMP 4.5-avlastning till NVidia PTX GPGPU.

Vad är nytt i version 6.3.0:

  • GCC 6.3 är ett felmeddelande från GCC 6-avdelningen som innehåller viktiga korrigeringar för regressioner och allvarliga buggar i GCC 6.2 med mer än 79 buggar fixade sedan föregående utgåva.

Vad är nytt i version 6.2.0:

  • Den här utgåvan är en buggfix-release, som innehåller korrigeringar för regressioner i GCC 5.2 i förhållande till tidigare utgåvor av GCC.

Vad är nytt i version 6.1.0:

  • Den här utgåvan är en buggfix-release, som innehåller korrigeringar för regressioner i GCC 5.2 i förhållande till tidigare utgåvor av GCC.

Vad är nytt i version 5.3.0:

  • Den här utgåvan är en buggfix-release, som innehåller korrigeringar för regressioner i GCC 5.2 i förhållande till tidigare utgåvor av GCC.

Vad är nytt i version 5.2.0:

  • Den här utgåvan är en buggfix-version, som innehåller korrigeringar för regressioner i GCC 5.1 i förhållande till tidigare utgåvor av GCC.

Vad är nytt i version 5.1.0:

  • C ++-fronten har nu fullt C ++ 14-språkstöd och Standard C ++-biblioteket har full C ++ 11-support och experimentellt fullt C ++ 14-support. Det fullständiga C ++ 11-stödet har gjorts möjligt genom att anta Dual ABI, se https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html för mer information.
  • C-fronten går nu till C11-läge med GNU-tillägg, vilket påverkar semantiken för inline-sökordet och ger flera andra användare synliga ändringar, se https://gcc.gnu.org/gcc-5/porting_to.html för mer information.
  • GCC 5.1 innehåller olika interprocedurala optimeringsförbättringar, t.ex. ett nytt IPA Identical Code Folding-pass och olika LTO-förbättringar, t.ex. ODR-baserade sammanslagning av C ++-typer, se http://hubicka.blogspot.cz/2015/04/GCC5-IPA-LTO-news.html för mer information.
  • GCC 5.1 Local Register Allocator innehåller nu ett subsystem för rematerialisering, på i? 86 / x86-64 kan återanvända PIC-hårdregistret för att förbättra prestanda för positionsoberoende kod, det finns ett enkelt interprocedural RA-pass och olika andra register fördelningsförbättringar tillkom.
  • GCC 5.1 lägger till delvis stöd för OpenACC-standarden, stöd för OpenMP 4.0-avlastning till Intels kommande Xeon Phi-acceleratorer och stöd för OpenACC-avlastning till PTX. Undefined Behavior Sanitizer i GCC har förlängts genom att lägga till olika nya runtime kontroller. Ett experimentellt GCC JIT-bibliotek har lagts till i GCC 5.1.

Vad är nytt i version 4.8.4:

  • Förbättringar av allmänna optimeringsverktyg:
  • AddressSanitizer, en snabb minnesfel detektor, är nu tillgänglig på ARM.
  • UndefinedBehaviorSanitizer (ubsan), en snabb odefinierad beteende detektor, har lagts till och kan aktiveras via -fsanitize = undefined. Olika beräkningar kommer att vara instrumenterade för att upptäcka odefinierat beteende vid körning. UndefinedBehaviorSanitizer är för närvarande tillgänglig för C och C ++-språk.
  • Förbättringar i Link-time Optimization (LTO):
  • Skrivning av sammanslagning har skrivits om. Den nya implementeringen är betydligt snabbare och använder mindre minne.
  • Bättre partitionsalgoritm resulterar i mindre strömning under länktid.
  • Tidigt avlägsnande av virtuella metoder minskar storleken på objektfiler och förbättrar länktidsminnesanvändning och sammanställer tid.
  • Funktionsorganen laddas nu på begäran och släpps tidigt och förbättrar den totala minnesanvändningen vid länktid.
  • C ++ dolda nyckelmetoder kan nu optimeras ut.
  • När du använder ett länkplugginställning, skapar kompilering med -flto-alternativet nu smala objektfiler (.o) som endast innehåller mellanliggande språkrepresentation för LTO. Använd -ffat-lto-objekt för att skapa filer som dessutom innehåller objektkoden. För att skapa statiska bibliotek som är lämpliga för LTO-bearbetning, använd gcc-ar och gcc-ranlib; att lista symboler från en smal objektfil använda gcc-nm. (Detta kräver att ar, ranlib och nm har sammanställts med plugin support.)
  • Minnesanvändningsbyggnad Firefox med debug-aktivering reducerades från 15 GB till 3,5 GB; länk tid från 1700 sekunder till 350 sekunder.
  • Förbättringar mellan procedurerna:
  • Ny typ av arvanalysmodul förbättrar devirtualisering. Devirtualization tar nu hänsyn till anonyma namn-mellanslag och det slutliga sökordet C + + 11.
  • Ny spekulativ devirtualiseringskort (kontrollerad av -fdevirtualize-speculatively.
  • Samtal som gjordes spekulativt görs direkt till indirekt där direktsamtal inte är billigare.
  • Lokala aliaser introduceras för symboler som är kända för att vara semantiskt ekvivalenta över delade bibliotek som förbättrar dynamiska länkningstider.
  • Feedback förbättrade optimeringsförbättringar:
  • Profilering av program som använder C ++ inline-funktioner är nu mer tillförlitlig.
  • Ny tidsprofilering bestämmer typisk ordning i vilka funktioner som utförs.
  • Ett nytt funktionsomvandlingspass (kontrollerat av -free-funktioner) minskar signifikant starttiden för stora applikationer. Till dess att binutils-support är klar är det bara effektivt med länktidsoptimering.
  • Feedback driven indirect call removal och devirtualization hanterar nu cross-module-samtal när länktidsoptimering är aktiverad.
  • Nya språk och språkspecifika förbättringar:
  • Version 4.0 av OpenMP-specifikationen stöds nu i C och C ++-kompilatorn och börjar med 4.9.1-utgåvan även i Fortran-kompilatorn. Alternativet new-fopenmp-simd kan användas för att aktivera OpenMPs SIMD-direktiv, samtidigt som man ignorerar andra OpenMP-direktiv. Den nya -fsimd-cost-model = alternativet tillåter att ställa in vektoriseringskostnadsmodellen för loopar som är noterade med OpenMP och Cilk Plus simd-direktiver; -Wopenmp-simd varnar när den nuvarande kostnadsmodellen överträder SIMD-direktiv som användaren fastställt.
  • Alternativet -Wattid-tid har lagts till för C, C ++ och Fortran-kompilatorn, som varnar när __DATE__, __TIME__ eller __TIMESTAMP__-makronen används. Dessa makron kan förhindra bitvisa identiska reproducerbara kompileringar.
  • Ada:
  • GNAT bytte till Ada 2012 istället för Ada 2005 som standard.
  • C-familj:
  • Stöd för colorizing diagnostik emitterad av GCC har lagts till. -Fdiagnostics-color = auto aktiverar den när den skickas till terminaler, -fdiagnostics-color = alltid villkorligt. GCC_COLORS miljövariabel kan användas för att anpassa färgerna eller inaktivera färgning. Om variabel GCC_COLORS finns i miljön är standard -fdiagnostics-color = auto, annars -fdiagnostics-color = never.
  • Sample diagnostics output:
  • $ g ++ -fdiagnostics-color = always -S -Wall test.C
  • test.C: I funktion & lsquo; int foo () ':
  • test.C: 1: 14: varning: inget retardement i funktionen som återgår icke-ogiltigt [-Wreturn-typ]
  • int foo () {}
  • test.C: 2: 46: fel: Inställningsdjupet överstiger högst 900 (använd -fält-djup = för att öka maximalt) instansierande & structur X '
  • mallstrukturen X {statisk const int värde = X :: värde; }; mallstrukturen X;
  • test.C: 2: 46: rekursivt krävs från & lsquo; const int X :: värde
  • test.C: 2: 46: krävs från & lsquo; const int X :: värde
  • test.C: 2: 88: krävs härifrån
  • test.C: 2: 46: fel: ofullständig typ & X; används i nested name specifier
  • Med den nya #pragma GCC ivdep kan användaren hävda att det inte finns några loop-bärna beroenden som skulle förhindra simultant utförande av på varandra följande iterationer med hjälp av SIMD-instruktioner (single instruction multiple data).
  • Stöd för Cilk Plus har lagts till och kan aktiveras med alternativet -fcilkplus. Cilk Plus är en förlängning till C och C ++-språk för att stödja data och uppgiftsparallellism. Den nuvarande implementeringen följer ABI version 1.2; alla funktioner men _Cilk_for har implementerats.
  • ISO C11 atomics (_Atomic typspecifier och kvalifierare och rubrik) stöds nu.
  • Generella val av ISO C11 (_Generic keyword) stöds nu.
  • ISO C11 trådlös lagring (_Thread_local, liknande GNU C __thread) stöds nu.
  • ISO C11-stöd är nu på samma nivå som fullständigt för ISO C99-stöd: väsentligen fullständiga modulbuggar, utökade identifierare (stöds förutom hörnfall när -fxtended-identifierare används), floating-point-problem (huvudsakligen men inte helt relaterade till valfria C99-funktioner från bilagorna F och G) och de valfria bilagorna K (Bound-check-gränssnitt) och L (Analyserbarhet).
  • En ny C-förlängning __auto_type ger en delmängd av funktionaliteten hos C ++ 11 auto i GNU C.
  • C ++:
  • G ++-genomförandet av C ++ 1y avdrag för returtyp för normala funktioner har uppdaterats för att överensstämma med N3638, förslaget accepterat i arbetsdokumentet. Mestadels lägger det till decltype (auto) för att få decltype semantik snarare än mall argument deduktions semantik för vanlig auto:
  • int & amp; f ();
  • auto i1 = f (); // int
  • decltype (auto) i2 = f (); // int & amp;
  • G ++ stöder C ++ 1y lambda capture initializers:
  • [x = 42] {...};
  • De har faktiskt accepterats sedan GCC 4.5, men nu varnar inte kompilatorn om dem med -std = c ++ 1y och stöder också parenteserade och brace-enclosed initializers.
  • G ++ stöder C ++ 1y variabellängdsarrayer. G ++ har stödt GNU / C99-stil VLAs under lång tid, men nu stödjer den dessutom initierare och lambda capture genom referens. I C ++ 1y-läget kommer G ++ att klaga över VLA-användningar som inte är tillåtna av utkastet till standard, till exempel att bilda en pekare till VLA-typen eller tillämpa sizeof till en VLA-variabel. Observera att det nu framgår att VLAs inte kommer att ingå i C ++ 14, men kommer att ingå i ett separat dokument och då kanske C ++ 17.
  • void f (int n) {
  • int a [n] = {1, 2, 3}; // kastar std :: bad_array_length om n < 3
  • [& a] {för (int i: a) {cout

Vad är nytt i version 4.9.1:

  • GCC 4.9.1 är ett buggfix-frigivning från GCC 4.9-avdelningen som innehåller viktiga korrigeringar för regressioner och allvarliga buggar i GCC 4.9.0 med mer än 88 buggar fixade sedan föregående utgåva. Utöver det stöder GCC 4.9.1-utgåvan OpenMP 4.0 även i Fortran, snarare än bara i C och C ++.

Vad är nytt i version 4.9.0:

  • Förbättringar av allmänna optimeringsverktyg:
  • AddressSanitizer, en snabb minnesfel detektor, är nu tillgänglig på ARM.
  • UndefinedBehaviorSanitizer (ubsan), en snabb odefinierad beteende detektor, har lagts till och kan aktiveras via -fsanitize = undefined. Olika beräkningar kommer att vara instrumenterade för att upptäcka odefinierat beteende vid körning. UndefinedBehaviorSanitizer är för närvarande tillgänglig för C och C ++-språk.
  • Förbättringar i Link-time Optimization (LTO):
  • Skrivning av sammanslagning har skrivits om. Den nya implementeringen är betydligt snabbare och använder mindre minne.
  • Bättre partitionsalgoritm resulterar i mindre strömning under länktid.
  • Tidigt avlägsnande av virtuella metoder minskar storleken på objektfiler och förbättrar länktidsminnesanvändning och sammanställer tid.
  • Funktionsorganen laddas nu på begäran och släpps tidigt och förbättrar den totala minnesanvändningen vid länktid.
  • C ++ dolda nyckelmetoder kan nu optimeras ut.
  • När du använder ett länkplugginställningar, skapar kompilering med -flto-alternativet nu smala objektsfiler (.o) som endast innehåller mellanliggande språkrepresentation för LTO. Använd -ffat-lto-objekt för att skapa filer som dessutom innehåller objektkoden. För att skapa statiska bibliotek som är lämpliga för LTO-bearbetning, använd gcc-ar och gcc-ranlib; att lista symboler från en smal objektfil använda gcc-nm. (Kräver att ar, ranlib och nm har sammanställts med plugin support.)
  • Minnesanvändningsbyggnad Firefox med debug-aktivering reducerades från 15 GB till 3,5 GB; länk tid från 1700 sekunder till 350 sekunder.
  • Förbättringar mellan procedurerna:
  • Ny typ av arvanalysmodul förbättrar devirtualisering. Devirtualization tar nu hänsyn till anonyma namn-mellanslag och det slutliga sökordet C + + 11.
  • Ny spekulativ devirtualiseringskort (kontrollerad av -fdevirtualize-speculatively.
  • Samtal som gjordes spekulativt görs direkt till indirekt där direktsamtal inte är billigare.
  • Lokala aliaser introduceras för symboler som är kända för att vara semantiskt ekvivalenta över delade bibliotek som förbättrar dynamiska länkningstider.
  • Feedback förbättrade optimeringsförbättringar:
  • Profilering av program som använder C ++ inline-funktioner är nu mer tillförlitlig.
  • Ny tidsprofilering bestämmer typisk ordning i vilka funktioner som utförs.
  • Ett nytt funktionsomvandlingspass (kontrollerat av -free-funktioner) minskar signifikant starttiden för stora applikationer. Till dess att binutils-support är klar är det bara effektivt med länktidsoptimering.
  • Feedback driven indirect call removal och devirtualization hanterar nu cross-module-samtal när länktidsoptimering är aktiverad.
  • Nya språk och språkspecifika förbättringar:
  • Version 4.0 av OpenMP-specifikationen stöds nu för C- och C ++-kompilatorn. Alternativet new-fopenmp-simd kan användas för att aktivera OpenMPs SIMD-direktiv, samtidigt som man ignorerar andra OpenMP-direktiv. Den nya -fsimd-cost-model = alternativet tillåter att ställa in vektoriseringskostnadsmodellen för loopar som är noterade med OpenMP och Cilk Plus simd-direktiver; -Wopenmp-simd varnar när den nuvarande kostnadsmodellen överskrider simd-direktiv som användaren fastställt.
  • Alternativet -Wattid-tid har lagts till för C, C ++ och Fortran-kompilatorn, som varnar när __DATE__, __TIME__ eller __TIMESTAMP__-makronen används. Dessa makron kan förhindra bitvisa identiska reproducerbara kompileringar.
  • Ada:
  • GNAT bytte till Ada 2012 istället för Ada 2005 som standard.
  • C-familj:
  • Stöd för colorizing diagnostik emitterad av GCC har lagts till. -Fdiagnostics-color = auto aktiverar den när den skickas till terminaler, -fdiagnostics-color = alltid villkorligt. GCC_COLORS miljövariabel kan användas för att anpassa färgerna eller inaktivera färgning. Om variabel GCC_COLORS finns i miljön är standard -fdiagnostics-color = auto, annars -fdiagnostics-color = never.
  • Sample diagnostics output:
  • $ g ++ -fdiagnostics-color = always -S -Wall test.C
  • test.C: I funktion & lsquo; int foo () ':
  • test.C: 1: 14: varning: inget retardement i funktionen som återgår icke-ogiltigt [-Wreturn-typ]
  • int foo () {}
  • test.C: 2: 46: fel: Inställningsdjupet överstiger högst 900 (använd -fält-djup = för att öka maximalt) instansierande & structur X '
  • mallstrukturen X {statisk const int värde = X :: värde; }; mallstrukturen X;
  • test.C: 2: 46: rekursivt krävs från & lsquo; const int X :: värde
  • test.C: 2: 46: krävs från & lsquo; const int X :: värde
  • test.C: 2: 88: krävs härifrån
  • test.C: 2: 46: fel: ofullständig typ & X; används i nested name specifier
  • Med den nya #pragma GCC ivdep kan användaren hävda att det inte finns några loop-bärna beroenden som skulle förhindra simultant utförande av på varandra följande iterationer med hjälp av SIMD-instruktioner (single instruction multiple data).
  • Stöd för Cilk Plus har lagts till och kan aktiveras med alternativet -fcilkplus. Cilk Plus är en förlängning till C och C ++-språk för att stödja data och uppgiftsparallellism. Den nuvarande implementeringen följer ABI version 1.2; alla funktioner men _Cilk_for har implementerats.
  • ISO C11 atomics (_Atomic typspecifier och kvalifierare och rubrik) stöds nu.
  • Generella val av ISO C11 (_Generic keyword) stöds nu.
  • ISO C11 trådlös lagring (_Thread_local, liknande GNU C __thread) stöds nu.
  • ISO C11-stöd är nu på samma nivå som fullständigt för ISO C99-stöd: väsentligen fullständiga modulbuggar, utökade identifierare (stöds förutom hörnfall när -fxtended-identifierare används), floating-point-problem (huvudsakligen men inte helt relaterade till valfria C99-funktioner från bilagorna F och G) och de valfria bilagorna K (Bound-check-gränssnitt) och L (Analyserbarhet).
  • En ny C-förlängning __auto_type ger en delmängd av funktionaliteten hos C ++ 11 auto i GNU C.
  • C ++:
  • G ++-genomförandet av C ++ 1y avdrag för returtyp för normala funktioner har uppdaterats för att överensstämma med N3638, förslaget accepterat i arbetsdokumentet. Mestadels lägger det till decltype (auto) för att få decltype semantik snarare än mall argument deduktions semantik för vanlig auto:
  • int & amp; f ();
  • auto i1 = f (); // int
  • decltype (auto) i2 = f (); // int & amp;
  • G ++ stöder C ++ 1y lambda capture initializers:
  • [x = 42] {...};
  • De har faktiskt accepterats sedan GCC 4.5, men nu varnar inte kompilatorn om dem med -std = c ++ 1y och stöder också parenteserade och brace-enclosed initializers.
  • G ++ stöder C ++ 1y variabellängdsarrayer. G ++ har stödt GNU / C99-stil VLAs under lång tid, men nu stödjer den dessutom initierare och lambda capture genom referens. I C ++ 1y-läget kommer G ++ att klaga över VLA-användningar som inte är tillåtna av utkastet till standard, till exempel att bilda en pekare till VLA-typen eller tillämpa sizeof till en VLA-variabel. Observera att det nu framgår att VLAs inte kommer att ingå i C ++ 14, men kommer att ingå i ett separat dokument och då kanske C ++ 17.
  • void f (int n) {
  • int a [n] = {1, 2, 3}; // kastar std :: bad_array_length om n < 3
  • [& a] {för (int i: a) {cout

Liknande mjukvara

SlimIt
SlimIt

14 Apr 15

GNU Automake
GNU Automake

22 Jun 18

Ruby
Ruby

17 Aug 18

Kommentarer till GCC

1 Kommentarer
  • http://www.eduwizzonlinetrainings.com 29 Dec 17
    EduwizzOnlineTraining is one of the Best Online Training Institute in Hyderabad, Bangalore. Eduwizz provide courses like Hybris Development, WebSphere Commerce Server,Blockchain Training,Hyperledger Fabric Development ,Ethereum Development ,Commvault Training, Devops , Netapps , Mulesoft ESB ,Machine Learning,Data Science , Internet of Things , Hybris ,Angular JS , Node JS , Express JS , Business Analyst, Selenium testing with webdriver, Guidewire ,Adobe, RPA ,TSM, EMC...etc
Kommentar
Slå på bilder!