GNU Compiler Collection

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
GNU Compiler Collection
GCC logo
Gcc-4.1.1.pngGCC, під керуванням командного рядка
Розробник(и) The GNU Project
Перший випуск 23 травня 1987[1]
Стабільний випуск 4.8.1 (31 травня 2013; 324 дні тому)
Написано на C, C++, Ada
Операційна система декілька
Тип набір компіляторів
Ліцензія GPL
Сайт gcc.gnu.org

Набір компіля́торів GNU (GNU Compiler Collection, GCC) — набір компіляторів для різних мов програмування. GCC — вільне програмне забезпечення, розроблене Фондом Вільних Програм під ліцензією GNU GPL та GNU LGPL, і є ключовою складовою набору знарядь розробки GNU (GNU development toolchain). Це стандартний компілятор для вільних Юнікс-подібних операційних систем, і деяких пропрієтарних систем, що з них розвинулись, наприклад Mac OS X.

Спочатку називався GNU Компілятор Сі, оскільки підтримував лише одну мову програмування — C. Пізніше був розширений для підтримки C++, Fortran, Java (компілятор GCJ), Ada, та інших.

Огляд[ред.ред. код]

GCC започаткований Річардом Столменом у 1985 році як компілятор для проекту GNU Project, аби мати компілятор який є вільним програмним забезпеченням. Його розробкою тісно опікувався Фонд Вільних Програм. Перша версія випущена навесні 1987, на кінець 1987 року з'явилася підтримка C++. GCC був першим незалежно створеним (не базувався на препроцесорі CFront Б'ярна Страуструпа) та першим власне компілятором (а не препроцесором у C) мови C++.

У 1997 група розробників, незадоволена повільним темпом і закритістю офіційної розробки GCC, створила проект EGCS (Experimental/Enhanced GNU Compiler System — Експериментальна/Покращена Збірка Компіляторів GNU), який об'єднав декілька експериментальних відгалужень GCC. Розробка EGCS з часом виявилась більш життєвою ніж GCC, і у квітні 1999 року EGCS оголошена офіційною версією GCC.

GCC тепер розробляється широкою групою розробників зі всього світу. Вона перенесена на більшу кількість типів процесорів та операційних систем ніж будь-який інший компілятор.

GCC є офіційним компілятором GNU, включно із GNU/Linux, прийнятий як основний компілятор і для інших операційних систем, таких як варіанти *BSD, Mac OS X, NeXTSTEP, і BeOS. Версія GCC під Microsoft Windows забезпечується проектами MinGW та Cygwin, під DOS — проектом DJGPP (лише C/C++).

Мови[ред.ред. код]

Версія 4.0.0 (випущена 20 квітня 2005), у типовій збірці підтримує наступні мови:

Підтримка CHILL припинена через недостатню активність розробки. Додаткові проекти підтримують мови програмування Pascal, Modula-2, Modula-3, Mercury, VHDL, PL/I та Objective-C++.

Архітектури[ред.ред. код]

GCC (версії 4.1) створює код для таких процесорних архітектур:

Менш відомі серед підтримуваних процесорів включають 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 і Xtensa. Окремими проектами підтримується D10V, PDP-10 і Z8000.

Структура[ред.ред. код]

Зовнішній інтерфейс GCC є стандартом для компіляторів на платформі Unix. Користувач викликає управляючу програму, яка називається gcc. Вона інтерпретує аргументи командного рядка, визначає і запускає для кожного вхідного файлу свої компілятори потрібної мови, запускає, якщо необхідно, асемблер і компонувальник.

Компілятор кожної мови є окремою програмою, яка отримує початковий текст і породжує вихід на мові асемблера. Всі компілятори мають загальну внутрішню структуру:

  • front end, який проводить синтаксичний розбір і породжує абстрактне синтаксичне дерево,
  • і back end, який конвертує дерево в Register Transfer Language (RTL), виконує різні оптимізації, потім породжує програму на мові асемблера, використовуючи архітектурно-залежне зіставлення зі зразком.

GCC майже повністю написаний на Сі, хоча значна частина front-end для Ади написана на Ада.

Зневадження програм, скомпільованих за допомогою GCC[ред.ред. код]

Головним інструментом для зневадження програм, скомпільованих за допомогою GCC, є GNU Debugger (gdb). Існують також вузькоспеціалізовані засоби для зневаджування:

  • Valgrind для пошуку витоків пам'яті
  • GNU Profiler (gprof) використовується для того, щоб визначити, скільки часу йде на виконання тієї або іншої частини програми, як часто викликаються ті або інші процедури; для використання gprof необхідно компілювати програму із спеціальними опціями для включення «профілізації».

Інструментальні оболонки[ред.ред. код]

Компілятори мають десятки опцій і користуватися ними напряму не зовсім зручно. Для спрощення роботи використовують оболонки або інтегровані середовища розробкиCode::Blocks, Dev-C++/wxDev-C++, Eclipse, KDevelop, NetBeans.


Посилання[ред.ред. код]

Література[ред.ред. код]

Виноски[ред.ред. код]

  1. «GCC Releases». GNU Project. Архів оригіналу за 2013-06-23. Процитовано 2006-12-27. 

Дивись також[ред.ред. код]