Gnu compiler collection что это
The GCC developers are pleased to announce the release of GCC 11.2.
This release is a bug-fix release, containing fixes for regressions in GCC 11.1 relative to previous releases of GCC.
Языки
В версии 4.1.1 (выпущенной 24 мая 2006 года стандартный компилятор включал в себя front-end’ы для языков:
- Ada (GCC для Ada, или GNAT),
- Си (язык программирования)|Си,
- C++ (C++ для GCC, или G++),
- Фортран] (GCC для Fortran, или gfortran),
- Java (GCC для Java, или GCJ),
- Objective-C (GCC для Objective-C, или gobjc),
- Objective-C++ (GCC для Objective-C++, или gobjc++),
- Go (GCC для Go, или gccgo) (с версии 4.6 [7] ).
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
Главным инструментом для отладки программ, скомпилированных с помощью GCC, является GNU Debugger (gdb). Существуют также узкоспециализированные средства для отладки:
- Valgrind для поиска утечек памяти
- GNU Profiler используется для того, чтобы определить, сколько времени уходит на выполнение той или иной части программы, как часто вызываются те или иные процедуры; для использования gprof необходимо компилировать программу со специальными опциями для включения «профилирования».
- gcov для анализа покрытия
Release History
Get our announcements
Copyright (C) Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
GNU Compiler Collection
GNU Compiler Collection (обычно используется сокращение GCC) — набор компиляторов для различных языков программирования, разработанный в рамках проекта GNU. GCC является свободным программным обеспечением, распространяется фондом свободного программного обеспечения (FSF) на условиях GNU GPL и GNU Lesser General Public License и является ключевым компонентом GNU toolchain. Он используется как стандартный компилятор для свободных UNIX-подобных операционных систем [3] . Изначально названный GNU C Compiler поддерживал только язык Си. Позднее GCC был расширен для компиляции исходных кодов на таких языках программирования, как C++, Objective-C, Java, Фортран, Ada и Go.С версии 4.2.2 GCC перешёл на лицензию GNU General Public License GPL v3. [Источник 1]
Обзор GCC 4.8
С выпуском GCC 4.8.0 разработчики набора компиляторов GNU Compiler Collection завершили переход на C++ в реализации GCC. Работа по переводу кодовой базы на C++ продолжалась c 2008 года, и теперь подошла к концу. Миграция на C++ означает, что теперь для сборки GCC из исходников обязательно требуется компилятор С++ 2003. Ричард Столлман написал первый вариант GCC в 1985 году на непереносимом диалекте языка Паскаль. В 1987 году компилятор был переписан на языке Си, и в таком виде существовал до 2013 года.В новой версии GCC 4.8 улучшена производительность, реализован новый уровень оптимизации –Og для сверхбыстрой компиляции почти без оптимизаций. Добавлены детектор ошибок в памяти Address Sanitizer от компании Google и детектор гонок данных Thread Sanitizer, который обнаруживает совместный доступ к одним и тем же данным из различных нитей многопоточного приложения. Более подробно о нововведениях см. release notes.Детектор Address Sanitizer можно использовать на платформах Linux (IA-32, x86-64, x32, PowerPC, PowerPC64) и Darwin (x86-64), при этом скорость работы программы замедляется примерно в два раза.Детектор Thread Sanitizer замедляет скорость примерно в 10 раз.Кроме того, в GCC 4.8 улучшена поддержка C++11 и появилась поддержка архитектуры AArch64(ARM64), присутствующей в процессорах с набором команд ARMv8, хотя на рынке пока нет устройств с таким набором команд.GCC — официальный компилятор системы GNU, он также является главным компилятором для ряда других операционных систем, в том числе разных вариантов Linux и BSD, Mac OS X, ReactOS, BeOS и проч. Подробнее о причинах миграции на C++ и конкретно о внесённых изменениях см. в GCC Wiki: C++ Conversion. Вкратце, причина в популярности языка C++ и более чистом коде на «плюсах».
- Исходный код GCC 4.8.0
- Официальный SVN-сервер
- GCC-мануалы
К счастью, переход на C++ практически не отразился на производительности компиляторов GCC. [Источник 2]
Структура
Внешний интерфейс GCC является стандартом для компиляторов на платформе UNIX. Пользователь вызывает управляющую программу, которая называется gcc. Она интерпретирует аргументы командной строки, определяет и запускает для каждого входного файла свои компиляторы нужного языка, запускает, если необходимо, ассемблер и компоновщик.
Компилятор каждого языка является отдельной программой, которая получает исходный текст и порождает вывод на язык ассемблера|языке ассемблера. Все компиляторы имеют общую внутреннюю структуру: front end, который производит синтаксический разбор и порождает абстрактное синтаксическое дерево, и back end, который конвертирует дерево в Register Transfer Language (RTL), выполняет различные оптимизации, затем порождает программу на языке ассемблера, используя архитектурно-зависимое сопоставление с образцом.
До версии 4.7.2 GCC был почти полностью написан на Си, хотя значительная часть front-end для Ады написана на Аде. С 14.08.2012 разработка была переведена на язык C++ [9] , версия 4.8 [10] и более поздние требуют для своей сборки наличия C++ компилятора, поддерживающего С++ 2003.
GCC, the GNU Compiler Collection
The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, Go, and D, as well as libraries for these languages (libstdc++. ). GCC was originally written as the compiler for the GNU operating system. The GNU system was developed to be 100% free software, free in the sense that it respects the user's freedom.
We strive to provide regular, high quality releases, which we want to work well on a variety of native and cross targets (including GNU/Linux), and encourage everyone to contribute changes or help testing GCC. Our sources are readily and freely available via Git and weekly snapshots.
Major decisions about GCC are made by the steering committee, guided by the mission statement.
Содержание
References and Acknowledgements
GCC used to stand for the GNU C Compiler, but since the compiler supports several other languages aside from C, it now stands for the GNU Compiler Collection.
A list of successful builds is updated as new information becomes available.
The GCC developers would like to thank the numerous people that have contributed new features, improvements, bug fixes, and other changes as well as test results to GCC. This amazing group of volunteers is what makes GCC successful.
For additional information about GCC please refer to the GCC project web site or contact the GCC development mailing list.
Copyright (C) Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
Supported Releases
Обзор
В настоящее время GCC поддерживается группой программистов со всего мира. GCC является лидером по количеству процессоров и операционных систем, которые он поддерживает.
Будучи официальным компилятором системы GNU, GCC также является главным компилятором для сборки ряда других операционных систем; среди них — различные варианты Linux и Berkeley Software Distribution|BSD, а также ReactOS, Mac OS X, OpenSolaris, NeXTSTEP, BeOS и Haiku.
GCC часто выбирается для разработки программного обеспечения, которое должно работать на большом числе различных аппаратных платформ. Различия между «родными» для каждой из аппаратных платформ компиляторами приводят к трудностям при разработке кода, который бы корректно компилировался разными компиляторами, а кроме того, при использовании различных компиляторов сильно усложняются сборочные скрипты, которые должны собирать ПО для всех аппаратных платформ. При использовании GCC для компиляции кода под разные платформы будет использован один и тот же синтаксический анализатор. Поэтому если удалось собрать программу для одной из целевых платформ, то велика вероятность, что программа нормально соберётся и для других платформ.
GCC, the GNU Compiler Collection
The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, Go, and D, as well as libraries for these languages (libstdc++. ). GCC was originally written as the compiler for the GNU operating system. The GNU system was developed to be 100% free software, free in the sense that it respects the user's freedom.
We strive to provide regular, high quality releases, which we want to work well on a variety of native and cross targets (including GNU/Linux), and encourage everyone to contribute changes or help testing GCC. Our sources are readily and freely available via Git and weekly snapshots.
Major decisions about GCC are made by the steering committee, guided by the mission statement.
Критика
Некоторые разработчики OpenBSD, например Тео де Раадт и Отто Мурбек (Otto Moerbeek), критикуют GCC, называя его «громоздким, глючным, медленным и генерирующим плохой код» [11] . По причине такого критического отношения, а также из-за довольно ограничивающей (по сравнению с BSD) лицензии GPL, под которой выпущена коллекция компиляторов, была предпринята попытка заменить в NetBSD и OpenBSD GCC другими компиляторами, например, PCC [12] . Аналогичная работа по замене GCC на Clang ведётся в FreeBSD [13] .
Архитектуры
Список поддерживаемых GCC (для версии 4.3) процессоров включает в себя:
- Alpha
- ARM (архитектура)
- Atmel AVR
- Blackfin
- HC12
- H8/300
- x86 (IA-32 и x86-64)
- IA-64 («Itanium»)
- m68k
- Motorola 88000
- MIPS (архитектура)
- Texas Instruments MSP430
- PA-RISC
- PDP-11
- PowerPC
- R8C/M16C/M32C
- SPU в Cell (архитектура)
- System/370, System/390
- SuperH
- SPARC
- VAX
Менее известные процессоры, поддерживаемые в стандартном релизе:
Дополнительные типы архитектур и процессоров, которые поддерживаются версиями GCC, но поддержкой которых занимаются сторонние организации (не Фонд свободного программного обеспечения):
- D10V
- MeP
- MicroBlaze
- MSP430|TI MSP430
- TI C6X[8]
- Nios II и Nios
- PDP-10
- TIGCC (вариация Motorola 68000)
- Z8000
- PIC24/dsPIC
- OpenRISC 1000
Supported Releases
Get our announcements
Copyright (C) Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
Читайте также: