GNU Compiler Collection

Матеріал з Вікіпедії — вільної енциклопедії.

Перейти до: навігація, пошук
GNU Compiler Collection
GCC logo

GCC, під керуванням командного рядка
Тип: Компілятор
Розробник: The GNU Project
Стабільний випуск: 4.4.0 / 21 квітня 2009
ОС: декілька
Ліцензія: 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++, Eclipse, KDevelop, NetBeans.

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

[ред.] Зовнішні посилання

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

Особисті інструменти