GCC

Софтуер снимки:
GCC
Софтуер детайли:
Версия: 8.2.0 актуализира
Дата на качване: 16 Aug 18
Розробник: The GCC Team
Разрешително: Безплатно
Популярност: 108

Rating: 3.0/5 (Total Votes: 3)

GCC (GNU Compiler Collection) е софтуер за команден ред с отворен код, предназначен да работи като компилатор за операционни системи, базирани на GNU / Linux и BSD. Той включва преден план за многобройни езици за програмиране, включително обекти C, Go, C ++, Java, C, Ada и Fortran.


Характеристики с един поглед

С GCC можете да конфигурирате, компилирате и инсталирате GNU / Linux приложения в операционни системи Linux или BSD, като използвате само архива на съответната програма. Потребителите обаче не трябва да взаимодействат с компилатора, тъй като това се прави автоматично от конфигурирането и създаването на скриптове.

Проектът включва също така библиотеки за различни езици за програмиране, като libstdc и libgcj, както и повечето GNU софтуер, той трябва да бъде конфигуриран, преди да бъде инсталиран и инсталиран на вашия компютър.

Той може също така да покаже пълния път към конкретна библиотека, папки в пътя за търсене на компилатора, пълен път към конкретен компонент, директория на целевите библиотеки, наставка sysroot, която се използва за намиране на заглавки и нормализиран GNU триплей на целта. р>

Освен това има различни опции за предаване на определени опции и аргументи, разделени със запетая, на асемблера, препроцесора и линкера, компилирането и сглобяването без свързване, създаването на споделена библиотека и много други.


Проектиран за операционната система GNU

Първоначално, като основен компилатор за операционната система GNU, GCC (GNU Compiler Collection) е разработен като 100% свободен софтуер и е инсталиран по подразбиране за всяка дистрибуция на Linux.

Софтуерът се използва и от програмисти с отворен код за компилиране на техните програми. В командния ред има няколко опции, сред които можем да споменем възможността за показване на целевия процесор на компилатора, както и относителния път към библиотеките на OS.


Най-долу

Като цяло GCC е един от най-важните компоненти на всяка операционна система GNU / Linux. Не само че не можем дори да си представим свят без него, но GCC е основната причина зад цялата екосистема с отворен код.

Какво е новото в това издание: р>

  • GCC 7.3 е версия за корекция на бъгове от клона на GCC 7, съдържаща важни корекции за регресии и сериозни бъгове в GCC 7.2 с повече от 99 грешки, фиксирани от предишното издание.
  • Това издание включва опции за генериране на кодове за смекчаване на Spectre Variant 2 (CVE 2017-5715) за целите на x86 и powerpc.

Какво е новото във версия 8.1.0:

  • GCC 7.3 GCC 7 клон съдържа важни корекции за регресии и сериозни бъгове в GCC 7.2 с повече от 99 бъгове, фиксирани от предишното издание.
  • Това издание включва опции за генериране на кодове за смекчаване на Spectre Variant 2 (CVE 2017-5715) за целите на x86 и powerpc.

Какво е новото във версията:

  • GCC 7.1 е основно издание, съдържащо съществена нова функционалност, която не е налична в GCC 6.x или в предишни версии на GCC. C ++ интерфейсът вече има експериментална поддръжка за целия текущ проект C ++ 17 с опциите -std = c ++ 1z и -std = gnu ++ 1z и библиотеката libstdc ++ има по-голямата част от C ++ 17 draft функция на библиотеката. Това издание включва различни подобрения в излъчваната диагностика, включително подобрени местоположения, диапазони на местоположения, предложения за грешно написани идентификатори, имена на опции, указания за фиксиране и различни нови предупреждения. Оптимизаторите са подобрени, като подобренията се появяват във всички вътрешно- и междупроцесорни оптимизации, оптимизации на време за свързване и различни целеви backends, включително, но не само, добавянето на pass pass merging, оптимизиране на кода за повдигане, разделяне на loop и свиване подобряване на опаковката. Address Sanitizer вече може да докладва за употребата на променливи, след като напусне техния обхват. Сега GCC може да бъде конфигуриран за OpenMP 4.5 зареждане на NVPia PTX GPGPUs.

Какво е новото във версия 6.3.0:

  • GCC 6.3 е версия за корекция на бъгове от клона на GCC 6, съдържаща важни корекции за регресии и сериозни бъгове в GCC 6.2 с повече от 79 грешки, фиксирани от предишното издание.

Какво е новото във версия 6.2.0:

  • Тази версия е съобщение за отстраняване на бъгове, съдържащо корекции за регресии в GCC 5.2 спрямо предишни версии на GCC.

Какво е новото във версия 6.1.0:

  • Тази версия е съобщение за отстраняване на бъгове, съдържащо корекции за регресии в GCC 5.2 спрямо предишни версии на GCC.

Какво е новото във версия 5.3.0:

  • Тази версия е съобщение за отстраняване на бъгове, съдържащо корекции за регресии в GCC 5.2 спрямо предишни версии на GCC.

Какво е новото във версия 5.2.0:

  • Тази версия е съобщение за отстраняване на грешки, съдържащо корекции за регресии в GCC 5.1 спрямо предишни версии на GCC.

Какво е новото във версия 5.1.0:

  • В C ++ front-end вече има пълна C ++ 14 езикова поддръжка и стандартната C ++ библиотека има пълна C ++ 11 поддръжка и експериментална пълна C ++ 14 поддръжка. Цялата поддръжка на C ++ 11 стана възможна чрез приемането на Dual ABI, вижте https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html за повече подробности.
  • C входната част вече е по подразбиране в режим C11 с разширения GNU, което засяга семантиката на вградената ключова дума и носи няколко други видими промени за потребителя, вижте https://gcc.gnu.org/gcc-5/porting_to.html за повече подробности.
  • GCC 5.1 съдържа различни подобрения между оптималните процеси, напр. нов IPA идентичен код Сгъваем пропуск и различни подобрения на LTO, напр. ODR, базирано на сливането на типове C ++, вижте http://hubicka.blogspot.cz/2015/04/GCC5-IPA-LTO-news.html за повече подробности.
  • В GCC 5.1 локалния регистрационен разпределител сега съдържа подлеза за преобразуване, на i? 86 / x86-64 е в състояние да използва повторно PIC твърдия регистър, за да подобри изпълнението на позицията независим код, има прост междупроцедурен RA парола и различни други регистър добавените подобрения бяха добавени.
  • GCC 5.1 добавя частична поддръжка за стандарта OpenACC, поддръжка на OpenMP 4.0 за разтоварване до предстоящите Xeon Phi ускорители на Intel и поддръжка на OpenACC разтоварване на PTX. Неединфицираното поведение за дезинфекция в GCC е разширено чрез добавяне на различни нови проверки по време на изпълнение. В GCC 5.1 е добавена експериментална библиотека GCC JIT.

Какво е новото във версия 4.8.4:

  • Подобрения в общия оптимизатор:
  • АдресСанитизатор, бърз детектор за грешка в паметта, вече е налице на ARM.
  • НедефиниранBehaviorSanitizer (ubsan), бърз неопределен детектор за поведение, който е добавен и може да бъде активиран чрез -fsanitize = undefined. Различни изчисления ще бъдат инструктирани за откриване на недефинирано поведение по време на изпълнение. НедефиниранBehaviorSanitizer понастоящем е достъпен за C и C ++ езици.
  • Подобрения в оптимизирането на връзката по време (LTO):
  • Типът сливане е пренаписан. Новото внедряване е значително по-бързо и използва по-малко памет.
  • По-добър алгоритъм за разделяне, което води до по-малко поточно предаване по време на връзката.
  • Ранното премахване на виртуални методи намалява размера на файловете с обекти и подобрява употребата на паметта и времето за компилиране.
  • Функционалните тела вече се зареждат при поискване и се освобождават рано, като се подобрява цялостната употреба на паметта по време на връзката.
  • Скритите скрити с C ++ методи вече могат да бъдат оптимизирани.
  • Когато използвате приставка на линкер, компилирането с опцията -fto сега генерира тънки обектни файлове (.o), които съдържат само междинно езиково представяне за LTO. Използвайте -ffat-lto-objects за създаване на файлове, които допълнително съдържат обектния код. За да генерирате статични библиотеки, подходящи за обработка на LTO, използвайте gcc-ar и gcc-ranlib; за да изведете символи от тънък обемен файл използвайте gcc-nm. (Това изисква ар, ranlib и nm да са компилирани с поддръжка на приставки.)
  • Използване на паметта за изграждане на Firefox с активирана отстраняване на грешки бе намалена от 15 GB до 3,5 GB; време за връзка от 1700 секунди до 350 секунди.
  • Подобрения в междупрофесионалната оптимизация:
  • Нов модул за анализ на наследствения тип, подобряващ девиктуализацията. Devirtualization сега взема предвид анонимните пространства за имена и крайната ключова дума C ++ 11.
  • Нов спекулативен девиктризационен пропуск (контролиран от -fdevirtualize-спекулативно.
  • Обажданията, които са направени спекулативно директно, се връщат обратно на непреки, когато директното повикване не е по-евтино.
  • Въвеждат се местни псевдоними за символи, за които е известно, че са семантично еквивалентни в споделените библиотеки, подобряващи динамичните времена за свързване.
  • Подобрения, насочени към обратната оптимизация:
  • Подобряване на профилирането на програми, използващи C ++ инлайн функции
  • Новото профилиране на времето определя типичния ред, по който се изпълняват функциите.
  • Новата парола за пренареждане на функции (контролирана от функциите -freorder) значително намалява времето за стартиране на големи приложения. Докато не бъде завършена поддръжка на binutils, тя е ефективна само при оптимизиране на връзката по време.
  • Отстраняването на непрякото повикване и devirtualization, управлявани от обратна връзка, сега обработват кръстосано модулни повиквания, когато е активирана оптимизирането на времето за връзката.
  • Специфични подобрения за нови езици и език:
  • Версията 4.0 на спецификацията на OpenMP вече се поддържа в компилаторите C и C ++ и започва от версия 4.9.1 и в компилатора Fortran. Новата опция "fopenmp-simd" може да се използва за активиране на директивите за SIMD на OpenMP, като същевременно се игнорират другите директиви OpenMP. Новата опция -fsimd-cost-model = позволява да се настрои модела за векторизиране на разходите за цикли, обозначени с директиви OpenMP и Cilk Plus simd; -Wopenmp-simd предупреждава, когато текущият модел на разходите заменя правилата, зададени от потребителя.
  • Добавена е опцията -Wedtime-time за компилаторите C, C ++ и Fortran, която предупреждава, когато се използват макросите __DATE__, __TIME__ или __TIMESTAMP__. Тези макроси биха могли да възпрепятстват възпроизводимите компилации, съвместими с бита.
  • Ада:
  • GNAT е превключен на Ada 2012 вместо Ada 2005 по подразбиране.
  • C семейство:
  • Добавена е поддръжка за оцветяване на диагностиката, излъчвана от GCC. -Fdiagnostics-color = auto ще го активира, когато извежда към терминали, -fdiagnostics-color = винаги безусловно. Променливата на средата GCC_COLORS може да се използва за персонализиране на цветовете или деактивиране на оцветяването. Ако променливата GCC_COLORS присъства в средата, по подразбиране е -fdiagnostics-color = auto, иначе -fdiagnostics-color = never.
  • Примерна диагностика:
  • $ g ++ -fdiagnostics-color = always -S -Wall test.C
  • test.C: Във функцията "int foo ()":
  • test.C: 1: 14: предупреждение: няма връщане на изявление във функция за връщане на невалидно [-отведен тип]
  • int foo () {}
  • test.C: 2: 46: грешка: дълбочината на шаблона за инстанции надвишава максимум 900 (използвайте -ftemplate-depth = за да увеличите максимума) инстанция "struct X"
  • структура на шаблона X {static const int value = X :: value; }; шаблон структура X;
  • test.C: 2: 46: рекурсивно се изисква от & quot; const int X :: стойност '
  • test.C: 2: 46: изисква се от & lsquo; const int X :: стойност
  • test.C: 2: 88: изисква се оттук
  • test.C: 2: 46: грешка: непълен тип & lsquo; X ', използван в спецификатора за вложено име
  • С новия #pragma GCC ivdep потребителят може да твърди, че няма зависимости, пренасяни от веригата, което би предотвратило едновременното изпълнение на последователни итерации, като използва инструкции SIMD (единична инструкция за множество данни).
  • Добавена е поддръжка за Cilk Plus и може да бъде активирана с опцията -fcilkplus. Cilk Plus е разширение на C и C ++ езиците, за да поддържа паралелизма на данните и задачите. Настоящото изпълнение следва ABI версия 1.2; всички функции, но _Cilk_for са изпълнени.
  • Вече се поддържат атоми на ISO C11 (спецификаторът _Atomic тип, квалификаторът и заглавката).
  • Общите селекции на ISO C11 (_Generic ключова дума) вече се поддържат.
  • Сега е поддържано локално хранилище по ISO C11 (_Thread_local, подобно на GNU C __thread)
  • Поддръжката по ISO C11 вече е със сходно ниво на пълнота на поддръжката по ISO C99: по същество пълни модулни бъгове, разширени идентификатори (поддържа се с изключение на ъглови случаи, когато се използват идентификатори), въпроси с плаваща запетая (главно, но не изцяло свързани с опции C99 от приложения F и G) и незадължителните приложения K (интерфейси за проверка на границите) и L (анализируемост).
  • Новото разширение C __auto_type предоставя подклас от функционалността на C ++ 11 auto в GNU C.
  • C ++:
  • Внедряването на G ++ за отнемане на типа връщане C ++ за нормални функции бе актуализирано, за да съответства на N3638, предложението, прието в работната книга. Най-вече, той добавя decltype (auto) за получаване на семантика на decltype, а не на семантиката на присвояване на аргументи на шаблон на обикновена автоматична:
  • Int & усилвател; е ();
  • Автоматично i1 = f (); // int
  • decltype (автоматично) i2 = f (); // int & amp;
  • G ++ поддържа C ++ 1y инициализатори за улавяне на ламбда:
  • [x = 42] {...};
  • Всъщност, те са били приети от GCC 4.5, но сега компилаторът не предупреждава за тях с -std = c ++ 1y и поддържа инициализатори, които са оградени с скоби и скоби.
  • G ++ поддържа C ++ 1y масиви с променлива дължина. G ++ поддържа поддръжката на VLA в стил GNU / C99 за дълго време, но сега допълнително поддържа инициализатори и улавяне на ламбда чрез справка. В C ++ 1y режим G ++ ще се оплаче от използването на VLA, които не се допускат от черновата на стандарта, като например формиране на указател за тип VLA или прилагане на размер на променлива VLA. Имайте предвид, че сега изглежда, че VLAs няма да са част от C ++ 14, но ще бъдат част от отделен документ и може би C ++ 17.
  • void f (int n) {
  • int a [n] = {1, 2, 3}; // хвърля std :: bad_array_length ако n < 3
  • [& amp;] {за (int i: a) {cout

Какво е новото във версия 4.9.1:

  • GCC 4.9.1 е корекция на бъговете от клона на GCC 4.9, съдържащ важни корекции за регресии и сериозни бъгове в GCC 4.9.0 с повече от 88 грешки, фиксирани от предишното издание. В допълнение, GCC 4.9.1 освобождава OpenMP 4.0 също във Fortran, вместо в C и C ++.

Какво е новото във версия 4.9.0:

  • Подобрения в общия оптимизатор:
  • АдресСанитизатор, бърз детектор за грешка в паметта, вече е налице на ARM.
  • НедефиниранBehaviorSanitizer (ubsan), бърз неопределен детектор за поведение, който е добавен и може да бъде активиран чрез -fsanitize = undefined. Различни изчисления ще бъдат инструктирани за откриване на недефинирано поведение по време на изпълнение. НедефиниранBehaviorSanitizer понастоящем е достъпен за C и C ++ езици.
  • Подобрения в оптимизирането на връзката по време (LTO):
  • Типът сливане е пренаписан. Новото внедряване е значително по-бързо и използва по-малко памет.
  • По-добър алгоритъм за разделяне, което води до по-малко поточно предаване по време на връзката.
  • Ранното премахване на виртуални методи намалява размера на файловете с обекти и подобрява употребата на паметта и времето за компилиране.
  • Функционалните тела вече се зареждат при поискване и се освобождават рано, като се подобрява цялостната употреба на паметта по време на връзката.
  • Скритите скрити с C ++ методи вече могат да бъдат оптимизирани.
  • Когато използвате приставка на линкер, компилирането с опцията -fto сега генерира файлове с тънки обекти (.o), които съдържат само междинно езиково представяне за LTO. Използвайте -ffat-lto-objects за създаване на файлове, които допълнително съдържат обектния код. За да генерирате статични библиотеки, подходящи за обработка на LTO, използвайте gcc-ar и gcc-ranlib; за да изведете символи от тънък обемен файл използвайте gcc-nm. (Изисква се, че ar, ranlib и nm са компилирани с поддръжка на приставки.)
  • Използване на паметта за изграждане на Firefox с активирана отстраняване на грешки бе намалена от 15 GB до 3,5 GB; време за връзка от 1700 секунди до 350 секунди.
  • Подобрения в междупрофесионалната оптимизация:
  • Нов модул за анализ на наследствения тип, подобряващ девиктуализацията. Devirtualization сега взема предвид анонимните пространства за имена и крайната ключова дума C ++ 11.
  • Нов спекулативен девиктризационен пропуск (контролиран от -fdevirtualize-спекулативно.
  • Обажданията, които са направени спекулативно директно, се връщат обратно на непреки, когато директното повикване не е по-евтино.
  • Въвеждат се местни псевдоними за символи, за които е известно, че са семантично еквивалентни в споделените библиотеки, подобряващи динамичните времена за свързване.
  • Подобрения, насочени към обратната оптимизация:
  • Подобряване на профилирането на програми, използващи C ++ инлайн функции
  • Новото профилиране на времето определя типичния ред, по който се изпълняват функциите.
  • Новата парола за пренареждане на функции (контролирана от функциите -freorder) значително намалява времето за стартиране на големи приложения. Докато не бъде завършена поддръжка на binutils, тя е ефективна само при оптимизиране на връзката по време.
  • Отстраняването на непрякото повикване и devirtualization, управлявани от обратна връзка, сега обработват кръстосано модулни повиквания, когато е активирана оптимизирането на времето за връзката.
  • Специфични подобрения за нови езици и език:
  • Вече се поддържа версия 4.0 на спецификацията за OpenMP за компилаторите C и C ++. Новата опция "fopenmp-simd" може да се използва за активиране на директивите за SIMD на OpenMP, като същевременно се игнорират другите директиви OpenMP. Новата опция -fsimd-cost-model = позволява да се настрои модела за векторизиране на разходите за цикли, обозначени с директиви OpenMP и Cilk Plus simd; -Wopenmp-simd предупреждава, когато текущият costmodel има предимство пред директивите, зададени от потребителя.
  • Добавена е опцията -Wedtime-time за компилаторите C, C ++ и Fortran, която предупреждава, когато се използват макросите __DATE__, __TIME__ или __TIMESTAMP__. Тези макроси биха могли да възпрепятстват възпроизводимите компилации, съвместими с бита.
  • Ада:
  • GNAT е превключен на Ada 2012 вместо Ada 2005 по подразбиране.
  • C семейство:
  • Добавена е поддръжка за оцветяване на диагностиката, излъчвана от GCC. -Fdiagnostics-color = auto ще го активира, когато извежда към терминали, -fdiagnostics-color = винаги безусловно. Променливата на средата GCC_COLORS може да се използва за персонализиране на цветовете или деактивиране на оцветяването. Ако променливата GCC_COLORS присъства в средата, по подразбиране е -fdiagnostics-color = auto, иначе -fdiagnostics-color = never.
  • Примерна диагностика:
  • $ g ++ -fdiagnostics-color = always -S -Wall test.C
  • test.C: Във функцията "int foo ()":
  • test.C: 1: 14: предупреждение: няма връщане на изявление във функция за връщане на невалидно [-отведен тип]
  • int foo () {}
  • test.C: 2: 46: грешка: дълбочината на шаблона за инстанции надвишава максимум 900 (използвайте -ftemplate-depth = за да увеличите максимума) инстанция "struct X"
  • структура на шаблона X {static const int value = X :: value; }; шаблон структура X;
  • test.C: 2: 46: рекурсивно се изисква от & quot; const int X :: стойност '
  • test.C: 2: 46: изисква се от & lsquo; const int X :: стойност
  • test.C: 2: 88: изисква се оттук
  • test.C: 2: 46: грешка: непълен тип & lsquo; X ', използван в спецификатора за вложено име
  • С новия #pragma GCC ivdep потребителят може да твърди, че няма зависимости, пренасяни от веригата, което би предотвратило едновременното изпълнение на последователни итерации, като използва инструкции SIMD (единична инструкция за множество данни).
  • Добавена е поддръжка за Cilk Plus и може да бъде активирана с опцията -fcilkplus. Cilk Plus е разширение на C и C ++ езиците, за да поддържа паралелизма на данните и задачите. Настоящото изпълнение следва ABI версия 1.2; всички функции, но _Cilk_for са изпълнени.
  • Вече се поддържат атоми на ISO C11 (спецификаторът _Atomic тип, квалификаторът и заглавката).
  • Общите селекции на ISO C11 (_Generic ключова дума) вече се поддържат.
  • Сега е поддържано локално хранилище по ISO C11 (_Thread_local, подобно на GNU C __thread)
  • Поддръжката по ISO C11 вече е със сходно ниво на пълнота на поддръжката по ISO C99: по същество пълни модулни бъгове, разширени идентификатори (поддържа се с изключение на ъглови случаи, когато се използват идентификатори), въпроси с плаваща запетая (главно, но не изцяло свързани с опции C99 от приложения F и G) и незадължителните приложения K (интерфейси за проверка на границите) и L (анализируемост).
  • Новото разширение C __auto_type предоставя подклас от функционалността на C ++ 11 auto в GNU C.
  • C ++:
  • Внедряването на G ++ за отнемане на типа връщане C ++ за нормални функции бе актуализирано, за да съответства на N3638, предложението, прието в работната книга. Най-вече, той добавя decltype (auto) за получаване на семантика на decltype, а не на семантиката на присвояване на аргументи на шаблон на обикновена автоматична:
  • Int & усилвател; е ();
  • Автоматично i1 = f (); // int
  • decltype (автоматично) i2 = f (); // int & amp;
  • G ++ поддържа C ++ 1y инициализатори за улавяне на ламбда:
  • [x = 42] {...};
  • Всъщност, те са били приети от GCC 4.5, но сега компилаторът не предупреждава за тях с -std = c ++ 1y и поддържа инициализатори, които са оградени с скоби и скоби.
  • G ++ поддържа C ++ 1y масиви с променлива дължина. G ++ поддържа поддръжката на VLA в стил GNU / C99 за дълго време, но сега допълнително поддържа инициализатори и улавяне на ламбда чрез справка. В C ++ 1y режим G ++ ще се оплаче от използването на VLA, които не се допускат от черновата на стандарта, като например формиране на указател за тип VLA или прилагане на размер на променлива VLA. Имайте предвид, че сега изглежда, че VLAs няма да са част от C ++ 14, но ще бъдат част от отделен документ и може би C ++ 17.
  • void f (int n) {
  • int a [n] = {1, 2, 3}; // хвърля std :: bad_array_length ако n < 3
  • [& amp;] {за (int i: a) {cout

Подобен софтуер

Коментари към GCC

1 Коментари
  • 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
добавите коментар
Включете на изображения!
Търсене по категория