Spec-Zone.ru › GCC 5

Использование GNU Компилятора (GCC)

Использование GNU Компилятора (GCC)

В этом файле описывается использование GNU компиляторов.

Авторское право © 1988-2015 Free Software Foundation, Inc.

Разрешается копирование, распространение и/или модификация данного документа в соответствии с условиями GNU Лицензии на свободную документацию, версия 1.3 или любой последующей версии, опубликованной Free Software Foundation; при этом неизменяемые разделы — «Финансирование свободного программного обеспечения», тексты на лицевой обложке — (a) (см. ниже), а тексты на задней обложке — (b) (см. ниже). Копия лицензии включена в раздел под названием «GNU Лицензия на свободную документацию».

(a) Текст Free Software Foundation на лицевой обложке:

Руководство GNU

(b) Текст Free Software Foundation на задней обложке:

Вы имеете свободу копировать и модифицировать это руководство GNU, подобно программному обеспечению GNU. Копии, опубликованные Free Software Foundation, собирают средства для развития проекта GNU.

Краткое содержание

  • 1 Языки программирования, поддерживаемые GCC
  • 2 Стандарты языков, поддерживаемые GCC
  • 3 Командные опции GCC
  • 4 Определяемое реализацией поведение языка C
  • 5 Определяемое реализацией поведение языка C++
  • 6 Расширения семейства языков C
  • 7 Расширения языка C++
  • 8 Возможности GNU Objective-C
  • 9 Бинарная совместимость
  • 10 gcov—Программа анализа покрытия кода
  • 11 gcov-tool—Инструмент для обработки профилей Gcda в автономном режиме
  • 12 gcov-dump—Инструмент для выгрузки профилей Gcda и Gcno в автономном режиме
  • 13 Известные причины проблем с GCC
  • 14 Сообщения об ошибках
  • 15 Как получить помощь по GCC
  • 16 Содействие в разработке GCC
  • Финансирование свободного программного обеспечения
  • Проект GNU и GNU/Linux
  • GNU Общая публичная лицензия
  • GNU Лицензия на свободную документацию
  • Авторы GCC
  • Индекс опций
  • Индекс ключевых слов

Оглавление

  • 1 Языки программирования, поддерживаемые GCC
  • 2 Стандарты языков, поддерживаемые GCC
    • 2.1 Язык C
    • 2.2 Язык C++
    • 2.3 Языки Objective-C и Objective-C++
    • 2.4 Язык Go
    • 2.5 Справочные материалы по другим языкам
  • 3 Командные опции GCC
    • 3.1 Краткое описание опций
    • 3.2 Опции, контролирующие тип вывода
    • 3.3 Компиляция программ на C++
    • 3.4 Опции, контролирующие диалект C
    • 3.5 Опции, контролирующие диалект C++
    • 3.6 Опции, контролирующие диалекты Objective-C и Objective-C++
    • 3.7 Опции для управления форматированием сообщений об ошибках
    • 3.8 Опции для запроса или подавления предупреждений
    • 3.9 Опции для отладки вашей программы или GCC
    • 3.10 Опции управления оптимизацией
    • 3.11 Опции управления препроцессором
    • 3.12 Передача опций ассемблеру
    • 3.13 Опции для компоновки
    • 3.14 Опции для поиска каталогов
    • 3.15 Указание дочерних процессов и переключателей для их передачи
    • 3.16 Указание целевой машины и версии компилятора
END_OF_DOCUMENT_MARKER
    • 3.17 Модели и конфигурации оборудования
      • 3.17.1 Параметры AArch64
        • 3.17.1.1 Модификаторы функций -march и -mcpu
      • 3.17.2 Параметры Adapteva Epiphany
      • 3.17.3 Параметры ARC
      • 3.17.4 Параметры ARM
      • 3.17.5 Параметры AVR
        • 3.17.5.1 EIND и устройства с более чем 128 Кбайт памяти Flash
        • 3.17.5.2 Обработка специальных регистров RAMPD, RAMPX, RAMPY и RAMPZ
        • 3.17.5.3 Встроенные макросы AVR
      • 3.17.6 Параметры Blackfin
      • 3.17.7 Параметры C6X
      • 3.17.8 Параметры CRIS
      • 3.17.9 Параметры CR16
      • 3.17.10 Параметры Darwin
      • 3.17.11 Параметры DEC Alpha
      • 3.17.12 Параметры FR30
      • 3.17.13 Параметры FRV
      • 3.17.14 Параметры GNU/Linux
      • 3.17.15 Параметры H8/300
      • 3.17.16 Параметры HPPA
      • 3.17.17 Параметры IA-64
      • 3.17.18 Параметры LM32
      • 3.17.19 Параметры M32C
      • 3.17.20 Параметры M32R/D
      • 3.17.21 Параметры M680x0
      • 3.17.22 Параметры MCore
      • 3.17.23 Параметры MeP
      • 3.17.24 Параметры MicroBlaze
      • 3.17.25 Параметры MIPS
      • 3.17.26 Параметры MMIX
      • 3.17.27 Параметры MN10300
      • 3.17.28 Параметры Moxie
      • 3.17.29 Параметры MSP430
      • 3.17.30 Параметры NDS32
      • 3.17.31 Параметры Nios II
      • 3.17.32 Параметры Nvidia PTX
      • 3.17.33 Параметры PDP-11
      • 3.17.34 Параметры picoChip
      • 3.17.35 Параметры PowerPC
      • 3.17.36 Параметры RL78
      • 3.17.37 Параметры IBM RS/6000 и PowerPC
      • 3.17.38 Параметры RX
      • 3.17.39 Параметры S/390 и zSeries
      • 3.17.40 Параметры Score
      • 3.17.41 Параметры SH
      • 3.17.42 Параметры Solaris 2
      • 3.17.43 Параметры SPARC
      • 3.17.44 Параметры SPU
      • 3.17.45 Параметры System V
      • 3.17.46 Параметры TILE-Gx
      • 3.17.47 Параметры TILEPro
      • 3.17.48 Параметры V850
      • 3.17.49 Параметры VAX
      • 3.17.50 Параметры Visium
      • 3.17.51 Параметры VMS
      • 3.17.52 Параметры VxWorks
      • 3.17.53 Параметры x86
      • 3.17.54 Параметры x86 Windows
      • 3.17.55 Параметры Xstormy16
      • 3.17.56 Параметры Xtensa
      • 3.17.57 Параметры zSeries
    • 3.18 Параметры для правил кодовой генерации
    • 3.19 Переменные окружения, влияющие на GCC
    • 3.20 Использование предварительно скомпилированных заголовков
  • 4 Реализация C - Определяемое реализацией поведение
    • 4.1 Трансляция
    • 4.2 Окружение
    • 4.3 Идентификаторы
    • 4.4 Символы
    • 4.5 Целые числа
    • 4.6 Числа с плавающей точкой
    • 4.7 Массивы и указатели
    • 4.8 Подсказки
    • 4.9 Структуры, объединения, перечисления и битовые поля
    • 4.10 Квалификаторы
    • 4.11 Деклараторы
    • 4.12 Утверждения
    • 4.13 Предпроцессорные директивы
    • 4.14 Функции библиотеки
    • 4.15 Архитектура
    • 4.16 Поведение, зависящее от локали
  • 5 Реализация C++ - Определяемое реализацией поведение
    • 5.1 Условно поддерживаемое поведение
    • 5.2 Обработка исключений
  • 6 Расширения семейства языков C
    • 6.1 Определения и объявления в выражениях
    • 6.2 Местно объявленные метки
    • 6.3 Метки как значения
    • 6.4 Вложенные функции
    • 6.5 Создание вызовов функций
    • 6.6 Ссылка на тип с помощью typeof
    • 6.7 Условные операторы с опущенными операндами
    • 6.8 128-битные целые числа
    • 6.9 Целые числа двойной длины
    • 6.10 Комплексные числа
    • 6.11 Дополнительные типы с плавающей точкой
    • 6.12 Полуточная плавающая точка
    • 6.13 Десятичные типы с плавающей точкой
    • 6.14 Шестнадцатеричные числа с плавающей точкой
    • 6.15 Типы с фиксированной точкой
    • 6.16 Имена адресных пространств
      • 6.16.1 Имена адресных пространств AVR
      • 6.16.2 Имена адресных пространств M32C
      • 6.16.3 Имена адресных пространств RL78
      • 6.16.4 Имена адресных пространств SPU
    • 6.17 Массивы нулевой длины
    • 6.18 Структуры без элементов
    • 6.19 Массивы переменной длины
    • 6.20 Макросы с переменным числом аргументов.
    • 6.21 Несколько более свободные правила для экранированных символов новой строки
    • 6.22 Массивы без lvalue могут иметь индексы
    • 6.23 Арифметика с указателями void- и указателями на функции
    • 6.24 Указатели на массивы с квалификаторами работают как ожидается
    • 6.25 Непостоянные инициализаторы
    • 6.26 Сложные литералы
    • 6.27 Определённые инициализаторы
    • 6.28 Диапазоны case
    • 6.29 Приведение к типу объединения
    • 6.30 Смешанные объявления и код
    • 6.31 Объявление атрибутов функций
    • 6.32 Атрибуты меток
    • 6.33 Синтаксис атрибутов
    • 6.34 Прототипы и старые определения функций
    • 6.35 Комментарии в стиле C++
    • 6.36 Знаки доллара в именах идентификаторов
    • 6.37 Символ ESC в константах
    • 6.38 Указание атрибутов переменных
      • 6.38.1 Атрибуты переменных AVR
      • 6.38.2 Атрибуты переменных Blackfin
      • 6.38.3 Атрибуты переменных H8/300
      • 6.38.4 Атрибуты переменных IA-64
      • 6.38.5 Атрибуты переменных M32R/D
      • 6.38.6 Атрибуты переменных MeP
      • 6.38.7 Атрибуты переменных PowerPC
      • 6.38.8 Атрибуты переменных SPU
      • 6.38.9 Атрибуты переменных x86
      • 6.38.10 Атрибуты переменных Xstormy16
    • 6.39 Указание атрибутов типов
      • 6.39.1 Атрибуты типов ARM
      • 6.39.2 Атрибуты типов MeP
      • 6.39.3 Атрибуты типов PowerPC
      • 6.39.4 Атрибуты типов SPU
      • 6.39.5 Атрибуты типов x86
    • 6.40 Выяснение выравнивания типов или переменных
    • 6.41 Встроенная функция так же быстрая, как макрос
    • 6.42 Когда осуществляется доступ к объекту volatile?
    • 6.43 Как использовать язык ассемблера в C-коде
      • 6.43.1 Basic Asm — Инструкции ассемблера без операндов
      • 6.43.2 Extended Asm - Инструкции ассемблера с операндами выражений C
        • 6.43.2.1 Volatile
        • 6.43.2.2 Шаблон ассемблера
        • 6.43.2.3 Операнды вывода
        • 6.43.2.4 Операнды ввода
        • 6.43.2.5 Clobbers
        • 6.43.2.6 Метки Goto
        • 6.43.2.7 Модификаторы операндов x86
        • 6.43.2.8 Операнды x86 с плавающей точкой
      • 6.43.3 Ограничения для операндов asm
        • 6.43.3.1 Простые ограничения
        • 6.43.3.2 Множественные альтернативные ограничения
        • 6.43.3.3 Символы модификаторов ограничений
        • 6.43.3.4 Ограничения для конкретных машин
      • 6.43.4 Управление именами, используемыми в коде ассемблера
      • 6.43.5 Переменные в указанных регистрах
        • 6.43.5.1 Определение глобальных регистровых переменных
        • 6.43.5.2 Указание регистров для локальных переменных
      • 6.43.6 Размер asm
    • 6.44 Альтернативные ключевые слова
    • 6.45 Неполные enum типы
    • 6.46 Имена функций в виде строк
    • 6.47 Получение адреса возврата или фрейма функции
    • 6.48 Использование векторных инструкций через встроенные функции
    • 6.49 Поддержка offsetof
    • 6.50 Лексальные __sync встроенные функции для атомного доступа к памяти
    • 6.51 Встроенные функции для операций с атомарным доступом, учитывающим модель памяти
    • 6.52 Встроенные функции для выполнения арифметических операций с проверкой переполнения
    • 6.53 Специфичные для x86 расширения модели памяти для транзакционной памяти
    • 6.54 Встроенные функции для проверки размера объектов
    • 6.55 Встроенные функции для проверки границ указателей
    • 6.56 Встроенные функции расширения языка Cilk Plus для C/C++
    • 6.57 Другие встроенные функции, предоставляемые GCC
END_OF_DOCUMENT_MARKER
    • 6.58 Встроенные функции, специфичные для конкретных целевых машин
      • 6.58.1 Встроенные функции AArch64
      • 6.58.2 Встроенные функции Alpha
      • 6.58.3 Встроенные функции Altera Nios II
      • 6.58.4 Встроенные функции ARC
      • 6.58.5 Встроенные функции ARC SIMD
      • 6.58.6 Встроенные функции ARM iWMMXt
      • 6.58.7 Расширения языка C для ARM (ACLE)
      • 6.58.8 Встроенные функции статуса и управления плавающей запятой ARM
      • 6.58.9 Встроенные функции AVR
      • 6.58.10 Встроенные функции Blackfin
      • 6.58.11 Встроенные функции FR-V
        • 6.58.11.1 Типы аргументов
        • 6.58.11.2 Функции целых чисел с прямым отображением
        • 6.58.11.3 Функции обработки мультимедиа с прямым отображением
        • 6.58.11.4 Функции чтения/записи в сыром виде
        • 6.58.11.5 Другие встроенные функции
      • 6.58.12 Встроенные функции MIPS DSP
      • 6.58.13 Поддержка MIPS парных чисел с одинарной точностью
      • 6.58.14 Встроенные функции MIPS Loongson
        • 6.58.14.1 Арифметика парных чисел с одинарной точностью
        • 6.58.14.2 Встроенные функции для парных чисел с одинарной точностью
        • 6.58.14.3 Встроенные функции MIPS-3D
      • 6.58.15 Другие встроенные функции MIPS
      • 6.58.16 Встроенные функции MSP430
      • 6.58.17 Встроенные функции NDS32
      • 6.58.18 Встроенные функции picoChip
      • 6.58.19 Встроенные функции PowerPC
      • 6.58.20 Встроенные функции PowerPC AltiVec/VSX
      • 6.58.21 Встроенные функции PowerPC с аппаратной транзакционной памятью
        • 6.58.21.1 Встроенные функции PowerPC HTM низкого уровня
        • 6.58.21.2 Встроенные функции PowerPC HTM высокого уровня (встраиваемые)
      • 6.58.22 Встроенные функции RX
      • 6.58.23 Встроенные функции S/390 System z
      • 6.58.24 Встроенные функции SH
      • 6.58.25 Встроенные функции SPARC VIS
      • 6.58.26 Встроенные функции SPU
      • 6.58.27 Встроенные функции TI C6X
      • 6.58.28 Встроенные функции TILE-Gx
      • 6.58.29 Встроенные функции TILEPro
      • 6.58.30 Встроенные функции x86
      • 6.58.31 Встроенные функции x86 для транзакционной памяти
    • 6.59 Проверки формата, специфичные для конкретных целевых машин
      • 6.59.1 Проверки формата Solaris
      • 6.59.2 Проверки формата Darwin
    • 6.60 Директивы препроцессора, поддерживаемые GCC
      • 6.60.1 Директивы препроцессора ARM
      • 6.60.2 Директивы препроцессора M32C
      • 6.60.3 Директивы препроцессора MeP
      • 6.60.4 Директивы препроцессора RS/6000 и PowerPC
      • 6.60.5 Директивы препроцессора Darwin
      • 6.60.6 Директивы препроцессора Solaris
      • 6.60.7 Директивы препроцессора для переименования символов
      • 6.60.8 Директивы препроцессора для упаковки структур
      • 6.60.9 Директивы препроцессора для слабых символов
      • 6.60.10 Директивы препроцессора для диагностики
      • 6.60.11 Директивы препроцессора для видимости
      • 6.60.12 Директивы препроцессора для макросов push/pop
      • 6.60.13 Директивы препроцессора для функций с опциями
      • 6.60.14 Директивы препроцессора для циклов
    • 6.61 Неименованные поля структур и объединений
    • 6.62 Локальное хранилище потоков
      • 6.62.1 Изменения в ISO/IEC 9899:1999 для локального хранения потоков
      • 6.62.2 Изменения в ISO/IEC 14882:1998 для локального хранения потоков
    • 6.63 Двоичные константы с префиксом ‘0b’
  • 7 Расширения языка C++
    • 7.1 Когда происходит доступ к volatile объекту C++?
    • 7.2 Ограничение алиасинга указателей
    • 7.3 Нечеткая привязка
    • 7.4 Предикаты интерфейса и реализации C++
    • 7.5 Где шаблон?
    • 7.6 Извлечение указателя на функцию из связанного указателя на член-функцию
    • 7.7 Специфичные для C++ атрибуты переменных, функций и типов
    • 7.8 Многоверсионность функций
    • 7.9 Ассоциация имен пространств имён
    • 7.10 Свойства типов
    • 7.11 Исключение Java
    • 7.12 Устаревшие возможности
    • 7.13 Обратная совместимость
  • 8 Возможности GNU Objective-C
    • 8.1 API времени выполнения GNU Objective-C
      • 8.1.1 Современный API времени выполнения GNU Objective-C
      • 8.1.2 Традиционный API времени выполнения GNU Objective-C
    • 8.2 +load: Выполнение кода до main
      • 8.2.1 Что можно и что нельзя делать в +load
    • 8.3 Кодирование типов
      • 8.3.1 Устаревшее кодирование типов
      • 8.3.2 @encode
      • 8.3.3 Подписи методов
    • 8.4 Сбор мусора
    • 8.5 Объекты строковых констант
    • 8.6 compatibility_alias
    • 8.7 Исключения
    • 8.8 Синхронизация
    • 8.9 Быстрое перечисление
      • 8.9.1 Использование быстрого перечисления
      • 8.9.2 Синтаксис быстрого перечисления, подобный C99
      • 8.9.3 Подробности быстрого перечисления
      • 8.9.4 Протокол быстрого перечисления
    • 8.10 Обмен сообщениями с GNU Objective-C runtime
      • 8.10.1 Динамическая регистрация методов
      • 8.10.2 Обработчик перенаправления
  • 9 Бинарная совместимость
  • 10 gcov—Программа тестирования покрытия кода
    • 10.1 Введение в gcov
    • 10.2 Вызов gcov
    • 10.3 Использование gcov с оптимизацией GCC
    • 10.4 Краткое описание файлов данных gcov
    • 10.5 Перемещение файлов данных для поддержки кросс-профилирования
  • 11 gcov-tool—Инструмент для обработки профилей Gcda в автономном режиме
    • 11.1 Введение в gcov-tool
    • 11.2 Вызов gcov-tool
  • 12 gcov-dump—Инструмент для выгрузки профилей Gcda и Gcno в автономном режиме
    • 12.1 Введение в gcov-dump
    • 12.2 Вызов gcov-dump
  • 13 Известные причины проблем с GCC
    • 13.1 Фактические ошибки, которые мы ещё не исправили
    • 13.2 Взаимодействие
    • 13.3 Несовместимости GCC
    • 13.4 Исправленные заголовочные файлы
    • 13.5 Стандартные библиотеки
    • 13.6 Разочарования и недоразумения
    • 13.7 Распространённые недоразумения с GNU C++
      • 13.7.1 Объявлять и определять статические члены
      • 13.7.2 Поиск имен, шаблоны и доступ к членам базовых классов
      • 13.7.3 Временные объекты могут исчезнуть раньше, чем ожидается
      • 13.7.4 Неявная копирующая инициализация для виртуальных баз
    • 13.8 Определенные изменения, которые мы не хотим внедрять
    • 13.9 Сообщения об ошибках и предупреждения
  • 14 Сообщения об ошибках
    • 14.1 Вы нашли ошибку?
    • 14.2 Как и где сообщать об ошибках
  • 15 Как получить помощь по GCC
  • 16 Вклад в разработку GCC
  • Финансирование свободного программного обеспечения
  • Проект GNU и GNU/Linux
  • GNU Общественная лицензия
  • GNU Лицензия на свободную документацию
    • ДОПОЛНЕНИЕ: Как использовать эту лицензию для ваших документов
  • Авторы GCC
  • Индекс опций
  • Индекс ключевых слов

Введение

В этом руководстве описывается использование компиляторов GNU, а также их особенности, несовместимости и порядок отчётности об ошибках. Оно соответствует версии компиляторов (GCC) 5.5.0. В отдельном руководстве описаны внутренности компиляторов GNU, включая портирование их на новые целевые платформы и информация о написании фронт-эндов для новых языков. Смотрите Введение в GNU Compiler Collection (GCC) Internals.

• G++ и GCC: Вы можете компилировать программы на C или C++.
• Стандарты: Языковые стандарты, поддерживаемые GCC.
• Вызов GCC: Командные опции, поддерживаемые ‘gcc’.
• Реализация C: Как GCC реализует спецификацию ISO C.
• Реализация C++: Как GCC реализует спецификацию ISO C++.
• Расширения C: Расширения GNU для семейства языков C.
• Расширения C++: Расширения GNU для языка C++.
• Objective-C: Функции среды выполнения GNU Objective-C.
• Совместимость: Двоичная совместимость
• Gcov: gcov—программа тестирования покрытия кода.
• Gcov-tool: gcov-tool—программа обработки профилей gcda в автономном режиме.
• Gcov-dump: gcov-dump—инструмент для вывода профилей gcda и gcno в автономном режиме.
• Проблемы: Если у вас возникли проблемы с использованием GCC.
• Ошибки: Как, почему и где сообщать об ошибках.
• Обслуживание: Как получить помощь по GCC
• Содействие: Как участвовать в тестировании и разработке GCC.
• Финансирование: Как помочь обеспечить финансирование свободного программного обеспечения.
• Проект GNU: Проект GNU и GNU/Linux.
• Копирование: GNU Общественная лицензия объясняет, как вы можете копировать и распространять GCC.
• GNU Лицензия на свободную документацию: Как вы можете копировать и распространять это руководство.
• Авторы: Люди, которые внесли свой вклад в GCC.
• Индекс опций: Индекс командных опций.
• Индекс ключевых слов: Индекс понятий и имён символов.

Далее: G++ и GCC, Наверх: (DIR) [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-5.5.0/gcc/index.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API