GNU Compiler Collection

GNU Compiler Collection
GCC, управление в командной строке
Тип Компилятор
Разработчик The GNU Project
ОС Кроссплатформенное программное обеспечение
Текущая версия 4.1.1 — 24 мая, 2006
Лицензия GPL
Сайт gcc.gnu.org

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

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


Содержание

Обзор

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

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

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

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, Modula-2, Modula-3, Mercury, VHDL и PL/I.

Архитектуры

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

Список менее известных процессоров, поддерживаемых в стандартном релизе, включает в себя A29K, ARC, 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, MicroBlaze, MSP430 и Z8000, поддерживаются версиями GCC, поддержкой которых занимаются сторонние организации (не FSF).

Структура

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

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

GCC почти полностью написан на Си, хотя значитальная часть front-end для Ады написана на Ада.

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

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

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

См. также

  • LLVM, Low Level Virtual Machine compiler infrastructure
  • MinGW, Minimalist GNU for Windows
  • Cygwin

Ссылки

Литература

  • Артур Гриффитс GCC. Настольная книга пользователей, программистов и системных администраторов. — Диасофт, 2004. — С. 624. ISBN 966-7992-34-9
 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home