GNU Compiler Collection | это... Что такое GNU Compiler Collection? (original) (raw)

GNU Compiler Collection

Gccegg.svg
Gcc-4.1.1.png управление GCC в командной строке
Тип компилятор
Разработчик проект GNU
Написана на C
Интерфейс командная строка
Операционная система кроссплатформенное программное обеспечение
Языки интерфейса русский и ещё 16 языков
Последняя версия 4.7.2 (20 сентября 2012)
Состояние активное
Лицензия GNU GPL
Сайт gcc.gnu.org

GNU Compiler Collection (обычно используется сокращение GCC) — набор компиляторов для различных языков программирования, разработанный в рамках проекта GNU. GCC является свободным программным обеспечением, распространяется фондом свободного программного обеспечения (FSF) на условиях GNU GPL и GNU LGPL и является ключевым компонентом GNU toolchain. Он используется как стандартный компилятор для свободных UNIX-подобных операционных систем.

Изначально названный GNU C Compiler поддерживал только язык Си. Позднее, GCC был расширен для компиляции исходных кодов на таких языках программирования как C++, Objective-C, Java, Фортран и Ada.

С версии 4.2.2 GCC перешёл на лицензию GPLv3.

Содержание

Обзор

Начало GCC было положено Ричардом Столлманом, который реализовал первый вариант GCC в 1985 на нестандартном и непереносимом диалекте языка Паскаль; позднее компилятор был переписан на языке Си Леонардом Тауэром (англ. Leonard H. Tower Jr.) и Ричардом Столлманом[1] и выпущен в 1987[2] как компилятор для проекта GNU, который сам по себе являлся свободным программным обеспечением. Разработка GCC курируется Free Software Foundation.[3]

В настоящее время GCC поддерживается группой программистов со всего мира. GCC является лидером по количеству процессоров и операционных систем, которые он поддерживает.

Будучи официальным компилятором системы GNU, GCC также является главным компилятором для сборки ряда других операционных систем, среди них: различные варианты Linux и BSD, а также ReactOS, Mac OS X, OpenSolaris, NeXTSTEP, BeOS и Haiku.

GCC часто выбирается для разработки программного обеспечения, которое должно работать на большом числе различных аппаратных платформ. Различия между «родными» для каждой из аппаратных платформ компиляторами приводят к трудностям при разработке кода, который бы корректно компилировался разными компиляторами, а кроме того, при использовании различных компиляторов сильно усложняются сборочные скрипты, которые должны собирать ПО для всех аппаратных платформ. При использовании GCC для компиляции кода под разные платформы будет использован один и тот же синтаксический анализатор. Поэтому если удалось собрать программу для одной из целевых платформ, то велика вероятность, что программа нормально соберётся и для других платформ.

Языки

В версии 4.1.1 (выпущенной 24 мая 2006), стандартный компилятор включал в себя front-end’ы для:

Front end для CHILL был добавлен ранее, но из-за недостаточной поддержки был исключён из набора. До релиза версии 4.0 front-end’ом для Fortran был G77, который поддерживал лишь FORTRAN 77. В новых версиях G77 был исключён в пользу нового GFortran frontend который поддерживает Fortran 95.

Также существуют front-end’ы для Pascal, D, Модула-2, Modula-3, Mercury, VHDL и PL/I.

Архитектуры

Список поддерживаемых GCC (для версии 4.3) процессоров включает в себя:

Менее известные процессоры, поддерживаемые в стандартном релизе:

Дополнительные типы архитектур и процессоров, которые поддерживаются версиями GCC, но поддержкой которых занимаются сторонние организации (не Фондом свободного программного обеспечения):

Структура

Внешний интерфейс GCC является стандартом для компиляторов на платформе UNIX. Пользователь вызывает управляющую программу, которая называется gcc. Она интерпретирует аргументы командной строки, определяет и запускает для каждого входного файла свои компиляторы нужного языка, запускает, если необходимо, ассемблер и компоновщик.

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

До версии 4.7.2 GCC был почти полностью написан на Си, хотя значительная часть front-end для Ады написана на Ада. С версии 2012-08-14 разработка переведена на язык C++.

Отладка программ, скомпилированных с помощью GCC

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

Лицензия

GCC версии 4.2.1 стал последним релизом, выпущенным под GNU General Public License версии 2. Все последующие версии лицензируются по GPL версии 3.[6]

Критика

Некоторые разработчики OpenBSD, например, Тео де Раадт и Отто Мурбек (Otto Moerbeek), критикуют GCC, называя его «громоздким, глючным, медленным и генерирующим плохой код».[7] По причине такого критического отношения, а также из-за довольно ограничивающей (по сравнению с BSD) лицензии GPL, под которой выпущена коллекция компиляторов, была предпринята попытка заменить в NetBSD и OpenBSD GCC другими компиляторами, например, PCC[8]. Аналогичная работа по замене GCC на Clang ведется в FreeBSD[9].

См. также

Примечания

  1. Stallman, Richard M. (February 1986). «GNU Status». GNU's Bulletin (Free Software Foundation) 1 (1). Проверено 2006-09-26.
  2. Tower, Leonard (1987) «GNU C compiler beta test release,» comp.lang.misc USENET newsgroup; see also http://gcc.gnu.org/releases.html#timeline
  3. Stallman, Richard M. (2001) «Contributors to GCC,» in Using and Porting the GNU Compiler Collection (GCC) for gcc version 2.95 (Cambridge, Mass.: Free Software Foundation)
  4. GCC 4.6 Release Series — Changes, New Features, and Fixes — GNU Project — Free Software Foundation (FSF)
  5. http://gcc.gnu.org/ "TI C6X processor support [2011-07-15] A port for the TI C6X family of processors "
  6. Tools: GCC 4.2.1 Released — KernelTrap (англ.). kerneltrap.org (21 июля 2007). Архивировано из первоисточника 17 февраля 2012. Проверено 25 декабря 2009.
  7. More on OpenBSD’s new compiler — Mambo
  8. Towards a BSD-licensed Compiler
  9. FreeBSD Status Reports January — March, 2009

Литература

Ссылки

Просмотр этого шаблона Проект GNU
История Манифест GNUПроект GNUФонд свободного программного обеспечения (история) Heckert GNU white.svg
Лицензии GNU GPLGNU LGPLAffero GPLGNU FDL • GPL linking exception
Программноеобеспечение GNU (варианты) • HurdGNOMEBashGCC • GNU EmacsglibcGNU CoreutilsAutotoolsGNUnetGNUzilla (IceCat) • Gnashдругие пакеты
Персоналии Александре Олива • Бенджамин Хилл • Брэдли Кун • Эбен Моглен • Федерико Хейнц • Джордж Грив • Георг Греве • Джошуа Гэй • Лоис Дечэри • Мэтт Ли • Рикардо Галли • Ричард Столлман • Роберт Часселл • Вильям Джон Салливан
Другие темы Спор об именовании GNU/LinuxRevolution OSBadVistaDefective by Design
Просмотр этого шаблона Свободное и открытое программное обеспечение
Главное КопилефтСПО (ОпределениеКритерии Debian • Сообщество • Движение) • Gratis versus libre • Сравнение хостингов СПООткрытое ПО (Определение) • Определение свободных произведений культуры • Список FOSS-пакетов • Дистрибутив Linux
История GNULinux • Mozilla (Application Suite • FirefoxThunderbird)
Организации ASF • AOSP • Blender FoundationEclipse Foundation • FreeBSD Foundation • freedesktop.orgFSF • FSMI • GNOME FoundationПроект GNUGoogle CodeKDE e.V.Linux FoundationMozilla Foundation • OSGF • OSI • ReactOS Foundation • Software Freedom Conservancy • SourceForge • Symbian Foundation • The Document FoundationXiph.Org • XMPP Standards Foundation • X.Org Foundation
Лицензии Apache • Artistic • BeerwareBSDGNU GPLGNU LGPLISCMITMPLMs-PL/RLzlibPublic domain / CC0WTFPL • Лицензии, одобренные FSF • Пермиссивные лицензииРазнообразие лицензий
Проблемы Безопасность (англ.) • БлобКонфликт SCO — LinuxПрограммные патентыDRMТивоизацияTrusted ComputingГрафическое оборудование и СПО
Прочее СообществоФорк • Microsoft Open Specification Promise • Сравнение open source и закрытых исходников • Проприетарное ПОСобор и БазарРади удовольствияRevolution OS