GCC

Скріншот програми:
GCC
Дані програми:
Версія: 8.2.0 оновлений
Дата завантаження: 16 Aug 18
Розробник: The GCC Team
Ліцензія: Безкоштовно
Популярність: 182

Rating: 3.0/5 (Total Votes: 3)

GCC (GNU Compiler Collection) - це програмне забезпечення командного рядка із відкритим кодом, призначене як компілятор для операційних систем GNU / Linux та BSD. Він включає інтерфейси для багатьох мов програмування, включаючи Objective-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.

Програмне забезпечення також використовується розробниками Open Source для складання їх програм. Командний рядок поставляється з декількома параметрами, серед яких ми можемо згадати про можливість відображення цільового процесора компілятора, а також відносний шлях до бібліотек ОС.


Нижня лінія

Загалом, GCC є одним з найважливіших компонентів будь-якої операційної системи GNU / Linux. Не тільки, що ми навіть не можемо собі уявити світ без неї, але GCC є основною причиною всієї екосистеми Open Source.

Що нового в цьому випуску:

  • 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 Функції бібліотеки також реалізовані. Це випускає функції різноманітних покращень випущеної діагностики, включаючи покращені місця розташування, діапазони розташування, пропозиції щодо помилок, ідентифікаторів, назв варіантів, виправлень та інших нових попереджень. Оптимізатори були вдосконалені, з покращеннями з'являються у всіх внутрішньо-і міжпроцедурних оптимізаціях, оптимізації часу зв'язку та різноманітних цільових баз даних, включаючи, але не обмежуючись цим, додавання сховища злиття магазину, оптимізації підсилення коду, розщеплення циклу та стискання поліпшення упаковки. Адресатор Sanitizer тепер може повідомити про використання змінних після виходу з їх сфери. GCC тепер може бути налаштований для розвантаження OpenMP 4.5 для GPGPU NVidia PTX.

Що нового у версії 6.3.0:

  • GCC 6.3 - випуск помилок з розділу GCC 6, що містить важливі виправлення для регресій та серйозних помилок у GCC 6.2, з більш ніж 79 помилками, виправленими з попереднього випуску.

Що нового у версії 6.2.0:

  • Цей випуск - випуск виправлення помилок, який містить виправлення для регресій у GCC 5, 5 порівняно з попередніми версіями GCC.

Що нового в версії 6.1.0:

  • Цей випуск - випуск виправлення помилок, який містить виправлення для регресій у GCC 5, 5 порівняно з попередніми версіями GCC.

Що нового у версії 5.3.0:

  • Цей випуск - випуск виправлення помилок, який містить виправлення для регресій у GCC 5, 5 порівняно з попередніми версіями GCC.

Що нового у версії 5.2.0:

  • Цей випуск - випуск виправлення помилок, який містить виправлення для регресій у GCC 5.1 щодо попередніх версій GCC.

Що нового у версії 5.1.0:

  • Передній інтерфейс C ++ тепер має повну підтримку мови C ++ 14, а бібліотека Standard 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 містить різні вдосконалення оптимізації між процедурами, наприклад новий пакети Folding IPA Identical Code та різні поліпшення LTO, наприклад Злиття типів C + на основі ODR, див. На сторінці http://hubicka.blogspot.cz/2015/04/GCC5-IPA-LTO-news.html для отримання додаткової інформації.
  • Місцевий реєстратор місцевих реєстрів GCC 5.1 тепер містить підпатр ретераліалізації, а i? 86 / x86-64 здатний повторно використовувати жорсткий регістр ПІК, щоб поліпшити роботу незалежного коду позиції, існує простий інтерпроцедурний пропуск RA та різні інші реєстри Поліпшення розподілу додано.
  • GCC 5.1 додає часткову підтримку стандарту OpenACC, підтримку розвантаження OpenMP 4.0 для майбутніх прискорювачів Xeon Phi Intel та підтримку розвантаження OpenACC на PTX. Sanitizer Undefined Behavior в GCC був розширений, додавши різні нові перевірки виконання часу. Експериментальна бібліотека GIT JIT була додана в GCC 5.1.

Що нового в версії 4.8.4:

  • Загальні вдосконалення оптимізатора:
  • Адреса ARM, швидкий детектор помилок пам'яті, тепер доступний для ARM.
  • UndefinedBehaviorSanitizer (ubsan), швидкий невизначений детектор поведінки, був доданий і може бути включений за допомогою -fsanitize = undefined. Різні обчислення будуть інструментом для виявлення невизначеної поведінки під час виконання. UndefinedBehaviorSanitizer в даний час доступний для мов C та C ++.
  • Поліпшення оптимізації чату (LTO):
  • Тип злиття був переписаний. Нова реалізація значно швидша і використовує менше пам'яті.
  • Покращений алгоритм розбиття, що призводить до меншої потокової передачі протягом часу посилання.
  • Раннє вилучення віртуальних методів зменшує розмір об'єктних файлів і покращує час використання пам'яті та часу компіляції.
  • Функції тіла тепер завантажуються за запитом, і воно випускається, завдяки якому воно постійно покращується.
  • Приховані методи C ++ тепер можуть бути оптимізовані.
  • Використовуючи плагін лінкера, компіляція з опцією-flto тепер генерує тонкі об'єктові файли (.o), які містять лише проміжне представлення мови для LTO. Використовуйте -fat-lto-об'єкти для створення файлів, які додатково містять об'єктний код. Щоб створити статичні бібліотеки, придатні для обробки LTO, скористайтеся gcc-ar та gcc-ranlib; для переліку символів із файлу тонкого об'єкта скористайтеся gcc-nm. (Це вимагає, щоб ar, ranlib та nm були скомпільовані за допомогою плагіна.)
  • Використання пам'яті Firefox, де було ввімкнено налагодження, було зменшено з 15GB до 3.5GB; час зв'язку з 1700 секунд до 350 секунд.
  • Покращення між процедурної оптимізації:
  • Новий тип модуля аналізу спадщини, що покращує девіртуалізацію. Девіртуалізація тепер враховує анонімні назви-пробіли та остаточне ключове слово C ++ 11.
  • Новий спекулятивний девіртуалізаційний прохід (контрольований - де-віртуалізувати-спекулятивно.
  • Дзвінки, які були спекулятивно здійснені безпосередньо, повертаються до непрямих, якщо прямий дзвінок не є дешевшим.
  • Локальні псевдоніми вводяться для символів, які, як відомо, семантично еквівалентні в спільних бібліотеках, що покращують час динамічного з'єднання.
  • Покращення оптимізації зворотного зв'язку:
  • Тепер профілінг програм, що використовують вбудовані функції C ++, є більш надійним.
  • Нове профілювання часу визначає типовий порядок виконання функцій.
  • Нова функція переналаштування пропуску (керована функціями -freorder-функції) значно скорочує час запуску великих програм. Поки підтримка binutils не буде завершено, вона буде ефективною лише за умови оптимізації часу з'єднання.
  • Здійснення зворотного виклику, пов'язаного з зворотним зв'язком, і девіртуалізація, тепер обробляють крос-модульні дзвінки, якщо ввімкнено оптимізацію часу з'єднання.
  • Нові мовні та поліпшені мови:
  • Версія 4.0 специфікації OpenMP тепер підтримується у компіляторах C та C ++, а також починається з випуску 4.9.1 також у компіляторі Fortran. Новий параметр -fopenmp-simd може бути використаний для ввімкнення директив SIMD у OpenMP, ігноруючи інші директиви OpenMP. Новий параметр -fsimd-cost-model = дозволяє настроїти модель витрат на векторизацію для циклів з коментарями з директивами OpenMP та Cilk Plus simd; -Wopenmp-simd попереджає, коли поточна модель вартості перевизначає директиви simd, встановлені користувачем.
  • Параметр -Wdate-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 = ніколи.
  • Вибірка діагностики:
  • $ g ++ -fdiagnostics-color = always -S -Wall test.C
  • test.C: у функції & lsquo; int foo () ':
  • test.C: 1: 14: попередження: оператор повернення не повертається, не повертається [-Wreturn-type]
  • int foo () {}
  • test.C: 2: 46: помилка: глибина екземпляра шаблону перевищує максимум 900 (use -default depth = щоб збільшити максимум) instantiating & lsquo; struct X '
  • шаблон struct X {статичний констант int значення = X :: значення; }; шаблон struct X;
  • test.C: 2: 46: рекурсивно вимагається від "const int X :: value"
  • test.C: 2: 46: вимагається від "const int X :: value"
  • test.C: 2: 88: потрібно тут
  • test.C: 2: 46: помилка: неповний тип "X" використовується у вставленому імені
  • За допомогою нової #pragma GCC ivdep користувач може стверджувати, що не існує жодних підключень, що запобігають одночасному виконанню послідовних ітерацій, використовуючи інструкції SIMD (одиночні інструкції з кількома даними). ​​
  • Підтримка Cilk Plus була додана і може бути включена за допомогою параметра -fcilkplus. Cilk Plus - це розширення для мов C та C ++ для підтримки паралелізму даних і задач. Дана реалізація відповідає ABI версії 1.2; всі функції, крім _Cilk_for, були виконані.
  • Атоми ISO C11 (специфікатор і класифікатор атомічного типу та заголовок) тепер підтримуються.
  • Загальні вибори ISO C11 (ключове слово _Generic) тепер підтримуються.
  • ISO C11 поточний локальний накопичувач (_Thread_local, подібний до GNU C __thread) тепер підтримується
  • Підтримка ISO C11 тепер має аналогічний рівень завершеності до підтримки ISO C99: суттєво повні модульні помилки, розширені ідентифікатори (підтримуються, крім кутових випадків, коли використовуються розпізнавальні ідентифікатори), проблеми з плаваючою точкою (головним чином, але не цілком що стосуються необов'язкових функцій C99 з додатків F та G) та додаткових додатків K (інтерфейси перевірки допустимих значень) та L (аналізування).
  • Нове розширення C __auto_type надає підмножину функціональності автоматичної C ++ 11 у GNU C.
  • C ++:
  • Впровадження G ++ вилучення типу повернення типу C ++ для звичайних функцій було оновлено відповідно до N3638, пропозиція прийнята у робочий документ. Зокрема, він додає decltype (auto) для отримання семантики decltype, а не семантики вилучення аргументу шаблону звичайної автоматичної:
  • int & amp; f ();
  • авто i1 = f (); // int
  • decltype (авто) i2 = f (); // int & amp;
  • G ++ підтримує ініціалізатори схоплення лямбда C ++ 1:
  • [x = 42] {...};
  • Насправді, вони були прийняті з GCC 4.5, але зараз компілятор не попереджає про них з -std = c ++ 1y, а також підтримує вкладені в скобках і вкладені в скобки ініціалізатори.
  • G ++ підтримує масивів змінної довжини C ++ 1y. G ++ вже протягом тривалого часу підтримує VLA у стилі GNU / C99, але тепер додатково підтримує ініціалізатори та лямбда-захоплення за посиланням. У режимі C ++ 1y G ++ скаржиться на використання VLA, які не дозволяються проектом стандарту, наприклад, формування покажчика на тип VLA або застосування sizeof до змінної VLA. Зверніть увагу, що зараз виявляється, що VLA не буде частиною C ++ 14, але буде частиною окремого документа, а потім, можливо, C ++ 17.
  • void f (int n) {
  • int a [n] = {1, 2, 3}; // викидає std :: bad_array_length, якщо n & lt; 3
  • [& amp; a] {для (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, швидкий детектор помилок пам'яті, тепер доступний для ARM.
  • UndefinedBehaviorSanitizer (ubsan), швидкий невизначений детектор поведінки, був доданий і може бути включений за допомогою -fsanitize = undefined. Різні обчислення будуть інструментом для виявлення невизначеної поведінки під час виконання. UndefinedBehaviorSanitizer в даний час доступний для мов C та C ++.
  • Поліпшення оптимізації чату (LTO):
  • Тип злиття був переписаний. Нова реалізація значно швидша і використовує менше пам'яті.
  • Покращений алгоритм розбиття, що призводить до меншої потокової передачі протягом часу посилання.
  • Раннє вилучення віртуальних методів зменшує розмір об'єктних файлів і покращує час використання пам'яті та часу компіляції.
  • Функції тіла тепер завантажуються за запитом, і воно випускається, завдяки якому воно постійно покращується.
  • Приховані методи C ++ тепер можуть бути оптимізовані.
  • Використовуючи плагін лінкера, компіляція з опцією-flto тепер генерує файли тонких об'єктів (.o), які містять лише проміжне представлення мови для LTO. Використовуйте -fat-lto-об'єкти для створення файлів, які додатково містять об'єктний код. Щоб створити статичні бібліотеки, придатні для обробки LTO, скористайтеся gcc-ar та gcc-ranlib; для переліку символів із файлу тонкого об'єкта скористайтеся gcc-nm. (Необхідно, щоб зібрано ar, ranlib та nm за допомогою плагіна.)
  • Використання пам'яті Firefox, де було ввімкнено налагодження, було зменшено з 15GB до 3.5GB; час зв'язку з 1700 секунд до 350 секунд.
  • Покращення між процедурної оптимізації:
  • Новий тип модуля аналізу спадщини, що покращує девіртуалізацію. Девіртуалізація тепер враховує анонімні назви-пробіли та остаточне ключове слово C ++ 11.
  • Новий спекулятивний девіртуалізаційний прохід (контрольований - де-віртуалізувати-спекулятивно.
  • Дзвінки, які були спекулятивно здійснені безпосередньо, повертаються до непрямих, якщо прямий дзвінок не є дешевшим.
  • Локальні псевдоніми вводяться для символів, які, як відомо, семантично еквівалентні в спільних бібліотеках, що покращують час динамічного з'єднання.
  • Покращення оптимізації зворотного зв'язку:
  • Тепер профілінг програм, що використовують вбудовані функції C ++, є більш надійним.
  • Нове профілювання часу визначає типовий порядок виконання функцій.
  • Нова функція переналаштування пропуску (керована функціями -freorder-функції) значно скорочує час запуску великих програм. Поки підтримка binutils не буде завершено, вона буде ефективною лише за умови оптимізації часу з'єднання.
  • Здійснення зворотного виклику, пов'язаного з зворотним зв'язком, і девіртуалізація, тепер обробляють крос-модульні дзвінки, якщо ввімкнено оптимізацію часу з'єднання.
  • Нові мовні та поліпшені мови:
  • Версія 4.0 специфікації OpenMP тепер підтримується для компіляторів C і C ++. Новий параметр -fopenmp-simd може бути використаний для ввімкнення директив SIMD у OpenMP, ігноруючи інші директиви OpenMP. Новий параметр -fsimd-cost-model = дозволяє настроїти модель витрат на векторизацію для циклів з коментарями з директивами OpenMP та Cilk Plus simd; -Wopenmp-simd попереджає, коли поточна вартість моделі перекриває директиви simd, встановлені користувачем.
  • Параметр -Wdate-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 = ніколи.
  • Вибірка діагностики:
  • $ g ++ -fdiagnostics-color = always -S -Wall test.C
  • test.C: у функції & lsquo; int foo () ':
  • test.C: 1: 14: попередження: оператор повернення не повертається, не повертається [-Wreturn-type]
  • int foo () {}
  • test.C: 2: 46: помилка: глибина екземпляра шаблону перевищує максимум 900 (use -default depth = щоб збільшити максимум) instantiating & lsquo; struct X '
  • шаблон struct X {статичний констант int значення = X :: значення; }; шаблон struct X;
  • test.C: 2: 46: рекурсивно вимагається від "const int X :: value"
  • test.C: 2: 46: вимагається від "const int X :: value"
  • test.C: 2: 88: потрібно тут
  • test.C: 2: 46: помилка: неповний тип "X" використовується у вставленому імені
  • За допомогою нової #pragma GCC ivdep користувач може стверджувати, що не існує жодних підключень, що запобігають одночасному виконанню послідовних ітерацій, використовуючи інструкції SIMD (одиночні інструкції з кількома даними). ​​
  • Підтримка Cilk Plus була додана і може бути включена за допомогою параметра -fcilkplus. Cilk Plus - це розширення для мов C та C ++ для підтримки паралелізму даних і задач. Дана реалізація відповідає ABI версії 1.2; всі функції, крім _Cilk_for, були виконані.
  • Атоми ISO C11 (специфікатор і класифікатор атомічного типу та заголовок) тепер підтримуються.
  • Загальні вибори ISO C11 (ключове слово _Generic) тепер підтримуються.
  • ISO C11 поточний локальний накопичувач (_Thread_local, подібний до GNU C __thread) тепер підтримується
  • Підтримка ISO C11 тепер має аналогічний рівень завершеності до підтримки ISO C99: суттєво повні модульні помилки, розширені ідентифікатори (підтримуються, крім кутових випадків, коли використовуються розпізнавальні ідентифікатори), проблеми з плаваючою точкою (головним чином, але не цілком що стосуються необов'язкових функцій C99 з додатків F та G) та додаткових додатків K (інтерфейси перевірки допустимих значень) та L (аналізування).
  • Нове розширення C __auto_type надає підмножину функціональності автоматичної C ++ 11 у GNU C.
  • C ++:
  • Впровадження G ++ вилучення типу повернення типу C ++ для звичайних функцій було оновлено відповідно до N3638, пропозиція прийнята у робочий документ. Зокрема, він додає decltype (auto) для отримання семантики decltype, а не семантики вилучення аргументу шаблону звичайної автоматичної:
  • int & amp; f ();
  • авто i1 = f (); // int
  • decltype (авто) i2 = f (); // int & amp;
  • G ++ підтримує ініціалізатори схоплення лямбда C ++ 1:
  • [x = 42] {...};
  • Насправді, вони були прийняті з GCC 4.5, але зараз компілятор не попереджає про них з -std = c ++ 1y, а також підтримує вкладені в скобках і вкладені в скобки ініціалізатори.
  • G ++ підтримує масиви змінної довжини C ++ 1y. G ++ вже протягом тривалого часу підтримує VLA у стилі GNU / C99, але тепер додатково підтримує ініціалізатори та лямбда-захоплення за посиланням. У режимі C ++ 1y G ++ скаржиться на використання VLA, які не дозволяються проектом стандарту, наприклад, формування покажчика на тип VLA або застосування sizeof до змінної VLA. Зверніть увагу, що зараз виявляється, що VLA не буде частиною C ++ 14, але буде частиною окремого документа, а потім, можливо, C ++ 17.
  • void f (int n) {
  • int a [n] = {1, 2, 3}; // викидає std :: bad_array_length, якщо n & lt; 3
  • [& amp; a] {для (int i: a) {cout

Схожі програми

Mercury
Mercury

15 Apr 15

LLVM
LLVM

17 Aug 18

gears-coffeescript
gears-coffeescript

20 Feb 15

Rails
Rails

17 Feb 15

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
додати коментар
Включіть картинки!
Пошук за категоріями