Использование GNU компилятора (GCC)
В данном файле описывается использование GNU компиляторов.
Авторское право © 1988-2019 Фонд свободного программного обеспечения.
Разрешается копирование, распространение и/или модификация данного документа в соответствии с условиями GNU Лицензии на свободную документацию, версия 1.3 или более поздней версии, опубликованной Фондом свободного программного обеспечения; при этом неизменными разделами являются «Финансирование свободного программного обеспечения», тексты на обложке (а) (см. ниже), а тексты на задней обложке (b) (см. ниже). Копия лицензии включена в раздел, озаглавленный «GNU Лицензия на свободную документацию».
(а) Текст на обложке Фонда свободного программного обеспечения:
Руководство GNU
(b) Текст на задней обложке Фонда свободного программного обеспечения:
Вы имеете свободу копировать и изменять это руководство GNU, как и программное обеспечение GNU. Копии, опубликованные Фондом свободного программного обеспечения, собирают средства для развития 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
-
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 Опции для отладки программы
- 3.10 Опции управления оптимизацией
- 3.11 Опции для инструментирования программы
- 3.12 Опции управления препроцессором
- 3.13 Передача опций ассемблеру
- 3.14 Опции для компоновки
- 3.15 Опции поиска каталогов
- 3.16 Опции для соглашений о генерации кода
- 3.17 Опции разработчика GCC
-
3.18 Параметры, зависящие от машины
- 3.18.1 Параметры AArch64
- 3.18.2 Параметры Adapteva Epiphany
- 3.18.3 Параметры AMD GCN
- 3.18.4 Параметры ARC
- 3.18.5 Параметры ARM
- 3.18.6 Параметры AVR
- 3.18.7 Параметры Blackfin
- 3.18.8 Параметры C6X
- 3.18.9 Параметры CRIS
- 3.18.10 Параметры CR16
- 3.18.11 Параметры C-SKY
- 3.18.12 Параметры Darwin
- 3.18.13 Параметры DEC Alpha
- 3.18.14 Параметры FR30
- 3.18.15 Параметры FT32
- 3.18.16 Параметры FRV
- 3.18.17 Параметры GNU/Linux
- 3.18.18 Параметры H8/300
- 3.18.19 Параметры HPPA
- 3.18.20 Параметры IA-64
- 3.18.21 Параметры LM32
- 3.18.22 Параметры M32C
- 3.18.23 Параметры M32R/D
- 3.18.24 Параметры M680x0
- 3.18.25 Параметры MCore
- 3.18.26 Параметры MeP
- 3.18.27 Параметры MicroBlaze
- 3.18.28 Параметры MIPS
- 3.18.29 Параметры MMIX
- 3.18.30 Параметры MN10300
- 3.18.31 Параметры Moxie
- 3.18.32 Параметры MSP430
- 3.18.33 Параметры NDS32
- 3.18.34 Параметры Nios II
- 3.18.35 Параметры Nvidia PTX
- 3.18.36 Параметры OpenRISC
- 3.18.37 Параметры PDP-11
- 3.18.38 Параметры picoChip
- 3.18.39 Параметры PowerPC
- 3.18.40 Параметры RISC-V
- 3.18.41 Параметры RL78
- 3.18.42 Параметры IBM RS/6000 и PowerPC
- 3.18.43 Параметры RX
- 3.18.44 Параметры S/390 и zSeries
- 3.18.45 Параметры Score
- 3.18.46 Параметры SH
- 3.18.47 Параметры Solaris 2
- 3.18.48 Параметры SPARC
- 3.18.49 Параметры SPU
- 3.18.50 Параметры для System V
- 3.18.51 Параметры TILE-Gx
- 3.18.52 Параметры TILEPro
- 3.18.53 Параметры V850
- 3.18.54 Параметры VAX
- 3.18.55 Параметры Visium
- 3.18.56 Параметры VMS
- 3.18.57 Параметры VxWorks
- 3.18.58 Параметры x86
- 3.18.59 Параметры x86 Windows
- 3.18.60 Параметры Xstormy16
- 3.18.61 Параметры Xtensa
- 3.18.62 Параметры zSeries
- 3.19 Указание дочерних процессов и переключателей, передаваемых им
- 3.20 Переменные среды, влияющие на GCC
- 3.21 Использование предварительно скомпилированных заголовков
-
3.18 Параметры, зависящие от машины
-
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++ - определённое поведение
-
6 Расширения семейства языков C
- 6.1 Операторы и объявления в выражениях
- 6.2 Местно объявленные метки
- 6.3 Метки как значения
- 6.4 Вложенные функции
- 6.5 Нелокальные переходы
- 6.6 Создание вызовов функций
- 6.7 Ссылка на тип с
typeof - 6.8 Условные операторы с опущенными операндами
- 6.9 128-битные целые числа
- 6.10 Двойные слова целых чисел
- 6.11 Комплексные числа
- 6.12 Дополнительные типы с плавающей точкой
- 6.13 Полуточная плавающая точка
- 6.14 Десятичные типы с плавающей точкой
- 6.15 Шестнадцатеричные числа с плавающей точкой
- 6.16 Типы с фиксированной точкой
- 6.17 Имена адресных пространств
- 6.18 Массивы длины ноль
- 6.19 Структуры без членов
- 6.20 Массивы переменной длины
- 6.21 Макросы с переменным числом аргументов
- 6.22 Несколько менее жёсткие правила для экранированных символов новой строки
- 6.23 Массивы, не являющиеся lvalues, могут иметь индексы
- 6.24 Арифметика на указателях void и на указателях на функции
- 6.25 Указатели аргументов в функциях с переменным числом аргументов
- 6.26 Указатели на массивы с квалификаторами работают как ожидается
- 6.27 Непостоянные инициализаторы
- 6.28 Составные литералы
- 6.29 Обозначенные инициализаторы
- 6.30 Диапазоны case
- 6.31 Приведение к типу объединения
- 6.32 Смешанные объявления и код
-
6.33 Объявление атрибутов функций
- 6.33.1 Общие атрибуты функций
- 6.33.2 Атрибуты функций AArch64
- 6.33.3 Атрибуты функций AMD GCN
- 6.33.4 Атрибуты функций ARC
- 6.33.5 Атрибуты функций ARM
- 6.33.6 Атрибуты функций AVR
- 6.33.7 Атрибуты функций Blackfin
- 6.33.8 Атрибуты функций CR16
- 6.33.9 Атрибуты функций C-SKY
- 6.33.10 Атрибуты функций Epiphany
- 6.33.11 Атрибуты функций H8/300
- 6.33.12 Атрибуты функций IA-64
- 6.33.13 Атрибуты функций M32C
- 6.33.14 Атрибуты функций M32R/D
- 6.33.15 Атрибуты функций m68k
- 6.33.16 Атрибуты функций MCORE
- 6.33.17 Атрибуты функций MeP
- 6.33.18 Атрибуты функций MicroBlaze
- 6.33.19 Атрибуты функций Microsoft Windows
- 6.33.20 Атрибуты функций MIPS
- 6.33.21 Атрибуты функций MSP430
- 6.33.22 Атрибуты функций NDS32
- 6.33.23 Атрибуты функций Nios II
- 6.33.24 Атрибуты функций Nvidia PTX
- 6.33.25 Атрибуты функций PowerPC
- 6.33.26 Атрибуты функций RISC-V
- 6.33.27 Атрибуты функций RL78
- 6.33.28 Атрибуты функций RX
- 6.33.29 Атрибуты функций S/390
- 6.33.30 Атрибуты функций SH
- 6.33.31 Атрибуты функций SPU
- 6.33.32 Атрибуты функций Symbian OS
- 6.33.33 Атрибуты функций V850
- 6.33.34 Атрибуты функций Visium
- 6.33.35 Атрибуты функций x86
- 6.33.36 Атрибуты функций Xstormy16
-
6.34 Указание атрибутов переменных
- 6.34.1 Общие атрибуты переменных
- 6.34.2 Атрибуты переменных ARC
- 6.34.3 Атрибуты переменных AVR
- 6.34.4 Атрибуты переменных Blackfin
- 6.34.5 Атрибуты переменных H8/300
- 6.34.6 Атрибуты переменных IA-64
- 6.34.7 Атрибуты переменных M32R/D
- 6.34.8 Атрибуты переменных MeP
- 6.34.9 Атрибуты переменных Microsoft Windows
- 6.34.10 Атрибуты переменных MSP430
- 6.34.11 Атрибуты переменных Nvidia PTX
- 6.34.12 Атрибуты переменных PowerPC
- 6.34.13 Атрибуты переменных RL78
- 6.34.14 Атрибуты переменных SPU
- 6.34.15 Атрибуты переменных V850
- 6.34.16 Атрибуты переменных x86
- 6.34.17 Атрибуты переменных Xstormy16
-
6.33 Объявление атрибутов функций
- 6.35 Указание атрибутов типов
- 6.36 Атрибуты меток
- 6.37 Атрибуты перечислений
- 6.38 Атрибуты операторов
- 6.39 Синтаксис атрибутов
- 6.40 Прототипы и старые определения функций
- 6.41 Комментарии стиля C++
- 6.42 Знаки доллара в именах идентификаторов
- 6.43 Символ ESC в константах
- 6.44 Определение выравнивания функций, типов или переменных
- 6.45 Встроенная функция работает так же быстро, как макрос
- 6.46 Когда обращаются к объекту с модификатором volatile?
-
6.47 Как использовать встроенный язык ассемблера в коде C
- 6.47.1 Basic Asm — Инструкции ассемблера без операндов
- 6.47.2 Расширенный Asm - Инструкции ассемблера с операндами выражений C
- 6.47.3 Ограничения для операндов ассемблера
- 6.47.4 Управление именами, используемыми в коде ассемблера
- 6.47.5 Переменные в указанных регистрах
- 6.47.6 Размер ассемблерного кода
- 6.48 Альтернативные ключевые слова
- 6.49 Неполные типы перечислений
- 6.50 Имена функций как строки
- 6.51 Получение адреса возврата или фрейма функции
- 6.52 Использование векторных инструкций через встроенные функции
- 6.53 Поддержка offsetof
- 6.54 Встроенные функции legacy _sync для атомного доступа к памяти
- 6.55 Встроенные функции для операций с атомной памятью, учитывающие модель памяти
- 6.56 Встроенные функции для выполнения арифметических операций с проверкой переполнения
- 6.57 Расширения модели памяти x86 для транзакционной памяти
- 6.58 Встроенные функции для проверки размера объектов
- 6.59 Другие встроенные функции, предоставляемые GCC
- 6.60 Встроенные функции, специфичные для конкретных целевых машин
- 6.60.1 Встроенные функции AArch64
- 6.60.2 Встроенные функции Alpha
- 6.60.3 Встроенные функции Altera Nios II
- 6.60.4 Встроенные функции ARC
- 6.60.5 Встроенные функции ARC SIMD
- 6.60.6 Встроенные функции ARM iWMMXt
- 6.60.7 Расширения языка C ARM (ACLE)
- 6.60.8 Встроенные функции состояния и управления плавающей точкой ARM
- 6.60.9 Безопасность ARM ARMv8-M
- 6.60.10 Встроенные функции AVR
- 6.60.11 Встроенные функции Blackfin
- 6.60.12 Встроенные функции FR-V
- 6.60.13 Встроенные функции MIPS DSP
- 6.60.14 Поддержка MIPS Paired-Single
- 6.60.15 Встроенные функции MIPS Loongson
- 6.60.16 Поддержка архитектуры MIPS SIMD (MSA)
- 6.60.17 Другие встроенные функции MIPS
- 6.60.18 Встроенные функции MSP430
- 6.60.19 Встроенные функции NDS32
- 6.60.20 Встроенные функции picoChip
-
6.60.21 Основные встроенные функции PowerPC
- 6.60.21.1 Основные встроенные функции PowerPC, доступные на всех конфигурациях
- 6.60.21.2 Основные встроенные функции PowerPC, доступные на ISA 2.05
- 6.60.21.3 Основные встроенные функции PowerPC, доступные на ISA 2.06
- 6.60.21.4 Основные встроенные функции PowerPC, доступные на ISA 2.07
- 6.60.21.5 Основные встроенные функции PowerPC, доступные на ISA 3.0
- 6.60.22 Встроенные функции PowerPC AltiVec/VSX
- 6.60.23 Встроенные функции PowerPC транзакционной памяти аппаратного обеспечения
- 6.60.24 Функции атомарных операций с памятью PowerPC
- 6.60.25 Встроенные функции RX
- 6.60.26 Встроенные функции S/390 System z
- 6.60.27 Встроенные функции SH
- 6.60.28 Встроенные функции SPARC VIS
- 6.60.29 Встроенные функции SPU
- 6.61 Проверки формата, специфичные для целевых машин
-
6.62 Предикаты, принимаемые GCC
- 6.62.1 Предикаты AArch64
- 6.62.2 Предикаты ARM
- 6.62.3 Предикаты M32C
- 6.62.4 Предикаты MeP
- 6.62.5 Предикаты RS/6000 и PowerPC
- 6.62.6 Предикаты S/390
- 6.62.7 Предикаты Darwin
- 6.62.8 Предикаты Solaris
- 6.62.9 Предикаты переименования символов
- 6.62.10 Предикаты структуры макета
- 6.62.11 Предикаты слабых ссылок
- 6.62.12 Предикаты диагностики
- 6.62.13 Предикаты видимости
- 6.62.14 Предикаты макросов push/pop
- 6.62.15 Предикаты опций для функций
- 6.62.16 Предикаты для циклов
- 6.63 Неименованные поля структур и объединений
- 6.64 Локальное хранилище потоков
- 6.65 Двоичные константы с префиксом «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 Концепции C++
- 7.11 Устаревшие возможности
- 7.12 Обратная совместимость
- 8 Особенности GNU Objective-C
- 9 Бинарная совместимость
-
10
gcov—Программа анализа покрытия кода -
11
gcov-tool—Инструмент для обработки профилей Gcda в автономном режиме -
12
gcov-dump—Инструмент для выгрузки профилей Gcda и Gcno в автономном режиме -
13 Известные причины проблем с GCC
- 13.1 Фактические ошибки, которые мы ещё не исправили
- 13.2 Взаимодействие
- 13.3 Несовместимости GCC
- 13.4 Исправленные заголовочные файлы
- 13.5 Стандартные библиотеки
- 13.6 Разочарования и недопонимания
- 13.7 Распространённые недопонимания с GNU C++
- 13.8 Определённые изменения, которые мы не хотим вносить
- 13.9 Сообщения об ошибках и предупреждения
- 14 Сообщения об ошибках
- 15 Как получить помощь по GCC
- 16 Участие в разработке GCC
- Финансирование свободного ПО
- Проект GNU и GNU/Linux
- GNU Общая публичная лицензия
- GNU Лицензия на свободную документацию
- Авторы GCC
Введение
В данном руководстве описывается использование компиляторов GNU, а также их особенности, несовместимости и порядок отчётности об ошибках. Оно соответствует версии компиляторов (GCC) 9.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 [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-9.5.0/gcc/index.html