Использование 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
-
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 Указание целевой машины и версии компилятора
-
3.17 Модели и конфигурации оборудования
- 3.17.1 Параметры AArch64
- 3.17.2 Параметры Adapteva Epiphany
- 3.17.3 Параметры ARC
- 3.17.4 Параметры ARM
- 3.17.5 Параметры 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 Использование предварительно скомпилированных заголовков
-
3.17 Модели и конфигурации оборудования
-
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 Ссылка на тип с помощью
typeof - 6.7 Условные операторы с опущенными операндами
- 6.8 128-битные целые числа
- 6.9 Целые числа двойной длины
- 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 Массивы без 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.40 Выяснение выравнивания типов или переменных
- 6.41 Встроенная функция так же быстрая, как макрос
- 6.42 Когда осуществляется доступ к объекту volatile?
- 6.43 Как использовать язык ассемблера в C-коде
- 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
-
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.12 Встроенные функции MIPS DSP
- 6.58.13 Поддержка MIPS парных чисел с одинарной точностью
- 6.58.14 Встроенные функции MIPS Loongson
- 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.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.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.58 Встроенные функции, специфичные для конкретных целевых машин
-
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
- 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) 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