GCC

Скриншот программы:
GCC
Детали программы:
Версия: 8.2.0 обновление
Дата загрузки: 16 Aug 18
Разработчик: The GCC Team
Тип распространения: Бесплатная
Популярность: 182

Rating: 3.0/5 (Total Votes: 3)

GCC (GNU Compiler Collection) - это программное обеспечение командной строки с открытым исходным кодом, предназначенное для работы в качестве компилятора для операционных систем на основе GNU / Linux и BSD. Он включает в себя интерфейсы для множества языков программирования, включая Objective-C, Go, C ++, Java, C, Ada и Fortran.


Особенности с первого взгляда

В GCC вы можете настраивать, компилировать и устанавливать приложения GNU / Linux в операционных системах Linux или BSD, используя только исходный архив соответствующей программы. Тем не менее, пользователи не должны взаимодействовать с компилятором, так как это делается автоматически с помощью скриптов configure и make.

В проект также входят библиотеки для различных языков программирования, такие как libstdc и libgcj, и, как и большинство программ GNU, его необходимо настроить до того, как он будет создан и установлен на вашем компьютере.

Он также может отображать полный путь к определенной библиотеке, папкам в пути поиска компилятора, полный путь к определенному компоненту, директорию целевых библиотек, суффиксу сущностей, который используется для поиска заголовков и нормализованной триппле GNU цели.

Кроме того, существуют различные другие опции для передачи определенных разделяемых запятыми параметров и аргументов на ассемблере, препроцессоре и компоновщике, компиляции и сборке без привязки, создании общей библиотеки и многих других.


Предназначен для операционной системы GNU

Будучи первоначально написанным в качестве основного компилятора для операционной системы GNU, GCC (сборник компиляторов GNU) был разработан для 100% бесплатного программного обеспечения и установлен по умолчанию для любого дистрибутива Linux.

Программное обеспечение также используется разработчиками Open Source для компиляции своих программ. В командной строке есть несколько опций, среди которых можно указать способность отображать целевой процессор компилятора & rsquo; s, а также относительный путь к библиотекам ОС.


Нижняя линия

В целом, GCC является одним из важнейших компонентов любой операционной системы GNU / Linux. Мало того, что мы можем даже представить мир без него, но GCC является основной причиной всей экосистемы с открытым исходным кодом.

Что нового в этой версии:

р>

  • GCC 7.3 является выпуском исправления ошибок из ветки GCC 7, содержащей важные исправления для регрессий и серьезных ошибок в GCC 7.2 с более чем 99 ошибками, исправленными с предыдущего выпуска.
  • Этот выпуск включает в себя опции генерации кода для смягчения Spectre Variant 2 (CVE 2017-5715) для целей x86 и powerpc.

Что нового в версии 8.1.0:

  • GCC 7.3 является выпуском исправления ошибок из GCC 7, содержащий важные исправления для регрессий и серьезных ошибок в GCC 7.2 с более чем 99 ошибками, исправленными с предыдущего выпуска.
  • Этот выпуск включает в себя опции генерации кода для смягчения Spectre Variant 2 (CVE 2017-5715) для целей x86 и powerpc.

Что нового в версии:

  • GCC 7.1 - это основной релиз, содержащий существенные новые функции, недоступные в версиях GCC 6.x или предыдущих выпусков GCC. Интерфейс C ++ теперь имеет экспериментальную поддержку для всех текущих проектов C ++ 17 с параметрами -std = c ++ 1z и -std = gnu ++ 1z, а библиотека libstdc ++ имеет большую часть проекта C ++ 17 также реализованы библиотечные функции. В этом выпуске реализованы различные улучшения в испускаемой диагностике, включая улучшенные местоположения, диапазоны местоположений, предложения для орфографических идентификаторов, имена опций, подсказки и другие новые предупреждения. Оптимизаторы были улучшены, а улучшения появились во всех внутри- и межпроцедурных оптимизациях, оптимизации времени ссылок и различных целевых бэкэндов, включая, помимо прочего, добавление слияния в хранилище, оптимизацию подъема кода, разбиение циклов и сжатие обертывание улучшений. Адрес Sanitizer теперь может сообщать о использовании переменных после того, как они покинули область действия. Теперь GCC можно настроить для разгрузки OpenMP 4.5 на GPGPU NVidia PTX.

Что нового в версии 6.3.0:

  • GCC 6.3 является выпуском исправления ошибок из ветки GCC 6, содержащей важные исправления для регрессий и серьезных ошибок в GCC 6.2 с более чем 79 ошибками, исправленными с предыдущей версии.

Что нового в версии 6.2.0:

  • Этот выпуск является выпуском исправления ошибок, содержащим исправления для регрессий в GCC 5.2 относительно предыдущих выпусков GCC.

Что нового в версии 6.1.0:

  • Этот выпуск является выпуском исправления ошибок, содержащим исправления для регрессий в GCC 5.2 относительно предыдущих выпусков GCC.

Что нового в версии 5.3.0:

  • Этот выпуск является выпуском исправления ошибок, содержащим исправления для регрессий в GCC 5.2 относительно предыдущих выпусков GCC.

Что нового в версии 5.2.0:

  • Этот выпуск является выпуском исправления ошибок, содержащим исправления для регрессий в GCC 5.1 относительно предыдущих выпусков GCC.

Что нового в версии 5.1.0:

  • В интерфейсе C ++ теперь имеется полная поддержка языка C ++ 14, а в стандартной библиотеке C ++ имеется полная поддержка C ++ 11 и экспериментальная полная поддержка C ++ 14. Полная поддержка C ++ 11 стала возможной благодаря использованию Dual ABI, см. Https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html для более подробной информации.
  • В интерфейсе C теперь по умолчанию используется режим C11 с расширениями GNU, который влияет на семантику ключевого слова inline и отображает несколько других видимых изменений пользователя, см. https://gcc.gnu.org/gcc-5/porting_to.html для более подробной информации.
  • GCC 5.1 содержит различные улучшения в области межпроцедурной оптимизации, например. новый Складной проход с идентификационным кодом IPA и различные усовершенствования LTO, например. ODR на основе слияния типов C ++, см. Http://hubicka.blogspot.cz/2015/04/GCC5-IPA-LTO-news.html для более подробной информации.
  • В локальном регистре GCC 5.1 Allocator теперь имеется переупаковка вторичной документации, на i? 86 / x86-64 можно повторно использовать жесткий регистр PIC для повышения производительности независимого от позиции кода, имеется простой межпроцессорный проход RA и другой другой регистр были добавлены улучшения распределения.
  • GCC 5.1 добавляет частичную поддержку стандарта OpenACC, поддержку разгрузки OpenMP 4.0 на ближайшие ускорители Xeon Phi от Intel и поддержку разгрузки OpenACC на PTX. Дефицит неопределенного поведения в GCC был расширен путем добавления различных новых проверок времени выполнения. Экспериментальная библиотека GIT JIT была добавлена ​​в GCC 5.1.

Что нового в версии 4.8.4:

  • Общие улучшения оптимизатора:
  • AddressSanitizer, детектор ошибок быстрой памяти, теперь доступен в ARM.
  • Добавлен UndefinedBehaviorSanitizer (ubsan) - детектор с быстрым неопределенным поведением и может быть включен через -fsanitize = undefined. Различные вычисления будут использоваться для обнаружения неопределенного поведения во время выполнения. UndefinedBehaviorSanitizer в настоящее время доступен для языков C и C ++.
  • Улучшения оптимизации ссылок (LTO):
  • Слияние типов было переписано. Новая реализация значительно быстрее и использует меньше памяти.
  • Улучшен алгоритм разбиения на разделы, что приводит к меньшему потоку во время соединения.
  • Раннее удаление виртуальных методов уменьшает размер объектных файлов и улучшает время использования памяти и время компиляции.
  • Органы функций теперь загружаются по требованию и освобождаются с раннего улучшения общего использования памяти во время соединения.
  • Скрытые скрытые методы C ++ теперь могут быть оптимизированы.
  • При использовании плагина-компоновщика компиляция с параметром -flto теперь генерирует тонкие объектные файлы (.o), которые содержат только промежуточное представление языка для LTO. Используйте объекты -ffat-lto для создания файлов, которые дополнительно содержат объектный код. Для создания статических библиотек, подходящих для обработки LTO, используйте gcc-ar и gcc-ranlib; для отображения символов из тонкого объектного файла используйте gcc-nm. (Это требует, чтобы ar, ranlib и nm были скомпилированы с поддержкой плагина.)
  • Построение памяти. Firefox с включенной отладкой был уменьшен с 15 до 3,5 ГБ; время соединения от 1700 секунд до 350 секунд.
  • Улучшение межпроцессорной оптимизации:
  • Модуль анализа наследования нового типа, улучшающий девиртуализацию. В Devirtualization теперь учитываются анонимные пространства имен и ключевое ключевое слово C ++ 11.
  • Новый спекулятивный пропуск девиртуализации (контролируемый -fdevirtualize-speculatively.
  • Звонки, которые были спекулятивно сделаны напрямую, возвращаются к косвенным, где прямой вызов не дешевле.
  • Локальные псевдонимы вводятся для символов, которые, как известно, являются семантически эквивалентными для разделяемых библиотек, улучшая время динамической компоновки.
  • Улучшения, направленные на оптимизацию обратной связи:
  • Профилирование программ с использованием встроенных функций C ++ теперь более надежным.
  • Новое временное профилирование определяет типичный порядок выполнения функций.
  • Новая функция переупорядочения (управляемая функциями -freorder-functions) значительно сокращает время запуска больших приложений. Пока поддержка binutils не будет завершена, она эффективна только при оптимизации времени соединения.
  • Устранение косвенных вызовов с обратной связью и девиртуализация теперь обрабатывают вызовы кросс-модулей, когда включена оптимизация времени соединения.
  • Новые улучшения для языков и языков:
  • Версия 4.0 спецификации OpenMP теперь поддерживается в компиляторах C и C ++ и начиная с версии 4.9.1 также в компиляторе Fortran. Новая опция -fopenmp-simd может использоваться для включения директив SIMD OpenMP, игнорируя другие директивы OpenMP. Новая опция -fsimd-cost-model = позволяет настраивать модель стоимости векторизации для циклов, аннотированных с помощью директив OpenMP и Cilk Plus simd; -Wopenmp-simd предупреждает, когда текущая модель затрат переопределяет директивы simd, установленные пользователем.
  • Параметр -Wdate-time был добавлен для компиляторов C, C ++ и Fortran, который предупреждает, когда используются макросы __DATE__, __TIME__ или __TIMESTAMP__. Эти макросы могут препятствовать размножению побитно-идентичных воспроизводимых компиляций.
  • Ada:
  • GNAT переключился на Ada 2012 вместо Ada 2005 по умолчанию.
  • Семья C:
  • Добавлена ​​поддержка раскрашивающей диагностики, выпущенной GCC. Параметр -fdiagnostics-color = auto будет включать его при выводе на терминалы, -fdiagnostics-color = всегда безоговорочно. Переменная окружения GCC_COLORS может использоваться для настройки цветов или отключения раскраски. Если в среде присутствует переменная GCC_COLORS, по умолчанию используется -fdiagnostics-color = auto, иначе -fdiagnostics-color = never.
  • Результат диагностики:
  • $ g ++ -fdiagnostics-color = always -S -Wall test.C
  • test.C: В функции & lsquo; int foo () ':
  • test.C: 1: 14: предупреждение: нет возврата в функции, возвращающей не-void [-Wreturn-type]
  • int foo () {}
  • test.C: 2: 46: ошибка: глубина экземпляра шаблона превышает максимум 900 (используйте -ftemplate-depth = для увеличения максимума), создавая экземпляр & lsquo; struct X '
  • шаблон struct X {static const int value = X :: значение; }; шаблон struct X;
  • test.C: 2: 46: рекурсивно требуется от & lsquo; const int X :: value '
  • test.C: 2: 46: требуется из & lsquo; const int X :: value '
  • test.C: 2: 88: требуется отсюда
  • test.C: 2: 46: ошибка: неполный тип & lsquo; X 'используется в спецификаторе вложенных имен
  • С помощью нового #pragma GCC ivdep пользователь может утверждать, что не существует зависимостей, связанных с циклом, которые предотвратили бы одновременное выполнение последовательных итераций с помощью инструкций SIMD (одна команда с несколькими данными).
  • Поддержка Cilk Plus добавлена ​​и может быть включена с параметром -fcilkplus. Cilk Plus является расширением языков C и C ++ для поддержки параллелизма данных и задач. Настоящая реализация соответствует ABI версии 1.2; все функции, но _Cilk_for были реализованы.
  • ИСО C11 atomics (спецификатор спецификатора _Atomic, спецификатор и заголовок) теперь поддерживаются.
  • В настоящее время поддерживаются общие подходы ISO C11 (ключевое слово _Generic).
  • В настоящее время поддерживается поддержка потоков данных ISO C11 (_Thread_local, аналогичная GNU C __thread).
  • Поддержка стандарта ISO C11 теперь соответствует уровню соответствия ISO C99: по существу, по модулю ошибок, расширенным идентификаторам (поддерживается, за исключением случаев, когда используются -fextended-identifiers), проблемы с плавающей запятой (в основном, но не полностью относящиеся к дополнительным функциям C99 из приложений F и G) и дополнительным приложениям K (интерфейсы проверки границ) и L (анализируемость).
  • Новое расширение C __auto_type предоставляет подмножество функций C ++ 11 auto в GNU C.
  • C ++:
  • Реализация G ++ реализации вывода типа C ++ 1y для нормальных функций обновлена ​​в соответствии с N3638, предложение принятое в рабочий документ. В частности, он добавляет decltype (auto) для получения семантики decltype, а не семантики вывода аргумента шаблона простого авто:
  • INT & амп; F ();
  • auto i1 = f (); // int
  • decltype (auto) i2 = f (); // int & amp;
  • G ++ поддерживает инициализаторы lambda capture C ++ 1y:
  • [x = 42] {...};
  • Собственно, они были приняты с GCC 4.5, но теперь компилятор не предупреждает о них с помощью -std = c ++ 1y и также поддерживает инициализаторы с заключенными в скобки и в скобках.
  • G ++ поддерживает массивы переменной длины C ++ 1y. G ++ долгое время поддерживал GNU / C99-стиль VLA, но теперь дополнительно поддерживает инициализаторы и захват лямбда по ссылке. В режиме C ++ 1y G ++ будет жаловаться на использование VLA, которые не разрешены стандартом проекта, например, формирование указателя на тип VLA или применение sizeof к переменной VLA. Обратите внимание, что теперь кажется, что VLA не будут частью C ++ 14, но будут частью отдельного документа, а затем, возможно, C ++ 17.
  • void f (int n) {
  • int a [n] = {1, 2, 3}; // выдает std :: bad_array_length, если n & lt; 3
  • [& amp; a] {для (int i: a) {cout

Что нового в версии 4.9.1:

  • GCC 4.9.1 является выпуском исправления ошибок из ветви GCC 4.9, содержащей важные исправления для регрессий и серьезных ошибок в GCC 4.9.0 с более чем 88 ошибками, исправленными с предыдущего выпуска. В дополнение к этому выпуск GCC 4.9.1 поддерживает OpenMP 4.0 также в Fortran, а не только на C и C ++.

Что нового в версии 4.9.0:

  • Общие улучшения оптимизатора:
  • AddressSanitizer, детектор ошибок быстрой памяти, теперь доступен в ARM.
  • Добавлен UndefinedBehaviorSanitizer (ubsan) - детектор с быстрым неопределенным поведением и может быть включен через -fsanitize = undefined. Различные вычисления будут использоваться для обнаружения неопределенного поведения во время выполнения. UndefinedBehaviorSanitizer в настоящее время доступен для языков C и C ++.
  • Улучшения оптимизации ссылок (LTO):
  • Слияние типов было переписано. Новая реализация значительно быстрее и использует меньше памяти.
  • Улучшен алгоритм разбиения на разделы, что приводит к меньшему потоку во время соединения.
  • Раннее удаление виртуальных методов уменьшает размер объектных файлов и улучшает время использования памяти и время компиляции.
  • Органы функций теперь загружаются по требованию и освобождаются с раннего улучшения общего использования памяти во время соединения.
  • Скрытые скрытые методы C ++ теперь могут быть оптимизированы.
  • При использовании плагина-компоновщика компиляция с параметром -flto теперь генерирует файлы тонких объектов (.o), которые содержат только промежуточное представление языка для LTO. Используйте объекты -ffat-lto для создания файлов, которые дополнительно содержат объектный код. Для создания статических библиотек, подходящих для обработки LTO, используйте gcc-ar и gcc-ranlib; для отображения символов из тонкого объектного файла используйте gcc-nm. (Требуется, чтобы ar, ranlib и nm были скомпилированы с поддержкой плагина.)
  • Построение памяти. Firefox с включенной отладкой был уменьшен с 15 до 3,5 ГБ; время соединения от 1700 секунд до 350 секунд.
  • Улучшение межпроцессорной оптимизации:
  • Модуль анализа наследования нового типа, улучшающий девиртуализацию. В Devirtualization теперь учитываются анонимные пространства имен и ключевое ключевое слово C ++ 11.
  • Новый спекулятивный пропуск девиртуализации (контролируемый -fdevirtualize-speculatively.
  • Звонки, которые были спекулятивно сделаны напрямую, возвращаются к косвенным, где прямой вызов не дешевле.
  • Локальные псевдонимы вводятся для символов, которые, как известно, являются семантически эквивалентными для разделяемых библиотек, улучшая время динамической компоновки.
  • Улучшения, направленные на оптимизацию обратной связи:
  • Профилирование программ с использованием встроенных функций C ++ теперь более надежным.
  • Новое временное профилирование определяет типичный порядок выполнения функций.
  • Новая функция переупорядочения (управляемая функциями -freorder-functions) значительно сокращает время запуска больших приложений. Пока поддержка binutils не будет завершена, она эффективна только при оптимизации времени соединения.
  • Устранение косвенных вызовов с обратной связью и девиртуализация теперь обрабатывают вызовы кросс-модулей, когда включена оптимизация времени соединения.
  • Новые улучшения для языков и языков:
  • Версия 4.0 спецификации OpenMP теперь поддерживается для компиляторов C и C ++. Новая опция -fopenmp-simd может использоваться для включения директив SIMD OpenMP, игнорируя другие директивы OpenMP. Новая опция -fsimd-cost-model = позволяет настраивать модель стоимости векторизации для циклов, аннотированных с помощью директив OpenMP и Cilk Plus simd; -Wopenmp-simd предупреждает, когда текущая costmodel переопределяет директивы simd, установленные пользователем.
  • Параметр -Wdate-time был добавлен для компиляторов C, C ++ и Fortran, который предупреждает, когда используются макросы __DATE__, __TIME__ или __TIMESTAMP__. Эти макросы могут препятствовать размножению побитно-идентичных воспроизводимых компиляций.
  • Ada:
  • GNAT переключился на Ada 2012 вместо Ada 2005 по умолчанию.
  • Семья C:
  • Добавлена ​​поддержка раскрашивающей диагностики, выпущенной GCC. Параметр -fdiagnostics-color = auto будет включать его при выводе на терминалы, -fdiagnostics-color = всегда безоговорочно. Переменная окружения GCC_COLORS может использоваться для настройки цветов или отключения раскраски. Если в среде присутствует переменная GCC_COLORS, по умолчанию используется -fdiagnostics-color = auto, иначе -fdiagnostics-color = never.
  • Результат диагностики:
  • $ g ++ -fdiagnostics-color = always -S -Wall test.C
  • test.C: В функции & lsquo; int foo () ':
  • test.C: 1: 14: предупреждение: нет возврата в функции, возвращающей не-void [-Wreturn-type]
  • int foo () {}
  • test.C: 2: 46: ошибка: глубина экземпляра шаблона превышает максимум 900 (используйте -ftemplate-depth = для увеличения максимума), создавая экземпляр & lsquo; struct X '
  • шаблон struct X {static const int value = X :: значение; }; шаблон struct X;
  • test.C: 2: 46: рекурсивно требуется от & lsquo; const int X :: value '
  • test.C: 2: 46: требуется из & lsquo; const int X :: value '
  • test.C: 2: 88: требуется отсюда
  • test.C: 2: 46: ошибка: неполный тип & lsquo; X 'используется в спецификаторе вложенных имен
  • С помощью нового #pragma GCC ivdep пользователь может утверждать, что не существует зависимостей, связанных с циклом, которые предотвратили бы одновременное выполнение последовательных итераций с помощью инструкций SIMD (одна команда с несколькими данными).
  • Поддержка Cilk Plus добавлена ​​и может быть включена с параметром -fcilkplus. Cilk Plus является расширением языков C и C ++ для поддержки параллелизма данных и задач. Настоящая реализация соответствует ABI версии 1.2; все функции, но _Cilk_for были реализованы.
  • ИСО C11 atomics (спецификатор спецификатора _Atomic, спецификатор и заголовок) теперь поддерживаются.
  • В настоящее время поддерживаются общие подходы ISO C11 (ключевое слово _Generic).
  • В настоящее время поддерживается поддержка потоков данных ISO C11 (_Thread_local, аналогичная GNU C __thread).
  • Поддержка стандарта ISO C11 теперь соответствует уровню соответствия ISO C99: по существу, по модулю ошибок, расширенным идентификаторам (поддерживается, за исключением случаев, когда используются -fextended-identifiers), проблемы с плавающей запятой (в основном, но не полностью относящиеся к дополнительным функциям C99 из приложений F и G) и дополнительным приложениям K (интерфейсы проверки границ) и L (анализируемость).
  • Новое расширение C __auto_type предоставляет подмножество функций C ++ 11 auto в GNU C.
  • C ++:
  • Реализация G ++ реализации вывода типа C ++ 1y для нормальных функций обновлена ​​в соответствии с N3638, предложение принятое в рабочий документ. В частности, он добавляет decltype (auto) для получения семантики decltype, а не семантики вывода аргумента шаблона простого авто:
  • INT & амп; F ();
  • auto i1 = f (); // int
  • decltype (auto) i2 = f (); // int & amp;
  • G ++ поддерживает инициализаторы lambda capture C ++ 1y:
  • [x = 42] {...};
  • Собственно, они были приняты с GCC 4.5, но теперь компилятор не предупреждает о них с помощью -std = c ++ 1y и также поддерживает инициализаторы с заключенными в скобки и в скобках.
  • G ++ поддерживает массивы переменной длины C ++ 1y. G ++ долгое время поддерживал GNU / C99-стиль VLA, но теперь дополнительно поддерживает инициализаторы и захват лямбда по ссылке. В режиме C ++ 1y G ++ будет жаловаться на использование VLA, которые не разрешены стандартом проекта, например, формирование указателя на тип VLA или применение sizeof к переменной VLA. Обратите внимание, что теперь кажется, что VLA не будут частью C ++ 14, но будут частью отдельного документа, а затем, возможно, C ++ 17.
  • void f (int n) {
  • int a [n] = {1, 2, 3}; // выдает std :: bad_array_length, если n & lt; 3
  • [& amp; a] {для (int i: a) {cout

Похожие программы

Stratego/XT
Stratego/XT

3 Jun 15

Susie
Susie

2 Jun 15

IPython
IPython

20 Feb 15

CURSEL
CURSEL

3 Jun 15

Комментарии к GCC

1 Комментариев
  • http://www.eduwizzonlinetrainings.com 29 Dec 17
    EduwizzOnlineTraining is one of the Best Online Training Institute in Hyderabad, Bangalore. Eduwizz provide courses like Hybris Development, WebSphere Commerce Server,Blockchain Training,Hyperledger Fabric Development ,Ethereum Development ,Commvault Training, Devops , Netapps , Mulesoft ESB ,Machine Learning,Data Science , Internet of Things , Hybris ,Angular JS , Node JS , Express JS , Business Analyst, Selenium testing with webdriver, Guidewire ,Adobe, RPA ,TSM, EMC...etc
добавить комментарий
Включите картинки!