Использование GNU компилятора (GCC)
Использование GNU компилятора (GCC)
В этом файле описывается использование GNU компиляторов.
Авторское право © 1988-2017 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 Опции для отладки вашей программы
- 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 Параметры для ARC
- 3.18.4 Параметры для ARM
- 3.18.5 Параметры для AVR
- 3.18.6 Параметры для Blackfin
- 3.18.7 Параметры для C6X
- 3.18.8 Параметры для CRIS
- 3.18.9 Параметры для CR16
- 3.18.10 Параметры для Darwin
- 3.18.11 Параметры для DEC Alpha
- 3.18.12 Параметры для FR30
- 3.18.13 Параметры для FT32
- 3.18.14 Параметры для FRV
- 3.18.15 Параметры для GNU/Linux
- 3.18.16 Параметры для H8/300
- 3.18.17 Параметры для HPPA
- 3.18.18 Параметры для IA-64
- 3.18.19 Параметры для LM32
- 3.18.20 Параметры для M32C
- 3.18.21 Параметры для M32R/D
- 3.18.22 Параметры для M680x0
- 3.18.23 Параметры для MCore
- 3.18.24 Параметры для MeP
- 3.18.25 Параметры для MicroBlaze
- 3.18.26 Параметры для MIPS
- 3.18.27 Параметры для MMIX
- 3.18.28 Параметры для MN10300
- 3.18.29 Параметры для Moxie
- 3.18.30 Параметры для MSP430
- 3.18.31 Параметры для NDS32
- 3.18.32 Параметры для Nios II
- 3.18.33 Параметры для Nvidia PTX
- 3.18.34 Параметры для PDP-11
- 3.18.35 Параметры для picoChip
- 3.18.36 Параметры для PowerPC
- 3.18.37 Параметры для RL78
- 3.18.38 Параметры IBM RS/6000 и PowerPC
- 3.18.39 Параметры для RX
- 3.18.40 Параметры S/390 и zSeries
- 3.18.41 Параметры Score
- 3.18.42 Параметры для SH
- 3.18.43 Параметры для Solaris 2
- 3.18.44 Параметры для SPARC
- 3.18.45 Параметры для SPU
- 3.18.46 Параметры для System V
- 3.18.47 Параметры для TILE-Gx
- 3.18.48 Параметры для TILEPro
- 3.18.49 Параметры для V850
- 3.18.50 Параметры для VAX
- 3.18.51 Параметры для Visium
- 3.18.52 Параметры для VMS
- 3.18.53 Параметры для VxWorks
- 3.18.54 Параметры для x86
- 3.18.55 Параметры для x86 Windows
- 3.18.56 Параметры для Xstormy16
- 3.18.57 Параметры для Xtensa
- 3.18.58 Параметры для 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 Определение типа с
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.31.1 Общие атрибуты функций
- 6.31.2 Атрибуты функций AArch64
- 6.31.3 Атрибуты функций ARC
- 6.31.4 Атрибуты функций ARM
- 6.31.5 Атрибуты функций AVR
- 6.31.6 Атрибуты функций Blackfin
- 6.31.7 Атрибуты функций CR16
- 6.31.8 Атрибуты функций Epiphany
- 6.31.9 Атрибуты функций H8/300
- 6.31.10 Атрибуты функций IA-64
- 6.31.11 Атрибуты функций M32C
- 6.31.12 Атрибуты функций M32R/D
- 6.31.13 Атрибуты функций m68k
- 6.31.14 Атрибуты функций MCORE
- 6.31.15 Атрибуты функций MeP
- 6.31.16 Атрибуты функций MicroBlaze
- 6.31.17 Атрибуты функций Microsoft Windows
- 6.31.18 Атрибуты функций MIPS
- 6.31.19 Атрибуты функций MSP430
- 6.31.20 Атрибуты функций NDS32
- 6.31.21 Атрибуты функций Nios II
- 6.31.22 Атрибуты функций Nvidia PTX
- 6.31.23 Атрибуты функций PowerPC
- 6.31.24 Атрибуты функций RL78
- 6.31.25 Атрибуты функций RX
- 6.31.26 Атрибуты функций S/390
- 6.31.27 Атрибуты функций SH
- 6.31.28 Атрибуты функций SPU
- 6.31.29 Атрибуты функций Symbian OS
- 6.31.30 Атрибуты функций V850
- 6.31.31 Атрибуты функций Visium
- 6.31.32 Атрибуты функций x86
- 6.31.33 Атрибуты функций Xstormy16
-
6.32 Указание атрибутов переменных
- 6.32.1 Общие атрибуты переменных
- 6.32.2 Атрибуты переменных AVR
- 6.32.3 Атрибуты переменных Blackfin
- 6.32.4 Атрибуты переменных H8/300
- 6.32.5 Атрибуты переменных IA-64
- 6.32.6 Атрибуты переменных M32R/D
- 6.32.7 Атрибуты переменных MeP
- 6.32.8 Атрибуты переменных Microsoft Windows
- 6.32.9 Атрибуты переменных MSP430
- 6.32.10 Атрибуты переменных PowerPC
- 6.32.11 Атрибуты переменных RL78
- 6.32.12 Атрибуты переменных SPU
- 6.32.13 Атрибуты переменных V850
- 6.32.14 Атрибуты переменных x86
- 6.32.15 Атрибуты переменных Xstormy16
- 6.33 Указание атрибутов типов
- 6.34 Атрибуты меток
- 6.35 Атрибуты перечислений
- 6.36 Синтаксис атрибутов
- 6.37 Прототипы и определения функций старого стиля
- 6.38 Комментарии стиля C++
- 6.39 Знаки доллара в именах идентификаторов
-
6.31 Объявление атрибутов функций
- 6.40 Символ ESC в константах
- 6.41 Уточнение выравнивания типов или переменных
- 6.42 Встроенная функция так же быстра, как макрос
- 6.43 Когда обращаются к объекту volatile?
- 6.44 Как использовать встроенный язык ассемблера в коде C
- 6.45 Альтернативные ключевые слова
- 6.46 Неполные типы
enum - 6.47 Имена функций в виде строк
- 6.48 Получение адреса возврата или фрейма функции
- 6.49 Использование векторных инструкций через встроенные функции
- 6.50 Поддержка
offsetof - 6.51 Устаревшие встроенные функции
__syncдля атомарного доступа к памяти - 6.52 Встроенные функции для атомарных операций, учитывающих модель памяти
- 6.53 Встроенные функции для выполнения арифметических операций с проверкой переполнения
- 6.54 x86-специфические расширения модели памяти для транзакционной памяти
- 6.55 Встроенные функции проверки размера объекта
- 6.56 Встроенные функции проверки границ указателей
- 6.57 Встроенные функции расширения языка Cilk Plus C/C++
- 6.58 Другие встроенные функции, предоставляемые GCC
-
6.59 Встроенные функции, специфичные для конкретных целевых машин
- 6.59.1 Встроенные функции AArch64
- 6.59.2 Встроенные функции Alpha
- 6.59.3 Встроенные функции Altera Nios II
- 6.59.4 Встроенные функции ARC
- 6.59.5 Встроенные функции ARC SIMD
- 6.59.6 Встроенные функции ARM iWMMXt
- 6.59.7 Расширения языка C ARM (ACLE)
- 6.59.8 Встроенные функции ARM для статуса и управления плавающей точкой
- 6.59.9 Встроенные функции AVR
- 6.59.10 Встроенные функции Blackfin
- 6.59.11 Встроенные функции FR-V
- 6.59.12 Встроенные функции MIPS DSP
- 6.59.13 Поддержка парных чисел с одинарной точностью MIPS
- 6.59.14 Встроенные функции MIPS Loongson
- 6.59.15 Другие встроенные функции MIPS
- 6.59.16 Встроенные функции MSP430
- 6.59.17 Встроенные функции NDS32
- 6.59.18 Встроенные функции picoChip
- 6.59.19 Встроенные функции PowerPC
- 6.59.20 Встроенные функции PowerPC AltiVec/VSX
- 6.59.21 Встроенные функции PowerPC аппаратной транзакционной памяти
- 6.59.22 Встроенные функции RX
- 6.59.23 Встроенные функции S/390 System z
- 6.59.24 Встроенные функции SH
- 6.59.25 Встроенные функции SPARC VIS
- 6.59.26 Встроенные функции SPU
- 6.59.27 Встроенные функции TI C6X
- 6.59.28 Встроенные функции TILE-Gx
- 6.59.29 Встроенные функции TILEPro
- 6.59.30 Встроенные функции x86
- 6.59.31 Встроенные функции x86 для транзакционной памяти
- 6.60 Проверка форматов, специфичные для конкретных целевых машин
-
6.59 Встроенные функции, специфичные для конкретных целевых машин
-
6.61 Прагмы, поддерживаемые GCC
- 6.61.1 Прагмы AArch64
- 6.61.2 Прагмы ARM
- 6.61.3 Прагмы M32C
- 6.61.4 Прагмы MeP
- 6.61.5 Прагмы RS/6000 и PowerPC
- 6.61.6 Прагмы S/390
- 6.61.7 Прагмы Darwin
- 6.61.8 Прагмы Solaris
- 6.61.9 Прагмы переименования символов
- 6.61.10 Прагмы структурированной компоновки
- 6.61.11 Прагмы слабых ссылок
- 6.61.12 Прагмы диагностики
- 6.61.13 Прагмы видимости
- 6.61.14 Прагмы макросов push/pop
- 6.61.15 Прагмы опций для функций
- 6.61.16 Прагмы для циклов
- 6.62 Неименованные поля структур и объединений
- 6.63 Локальное хранилище потоков
- 6.64 Двоичные константы с префиксом «0b»
-
6.61 Прагмы, поддерживаемые GCC
-
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 Концепции C++
- 7.12 Исключения Java
- 7.13 Устаревшие возможности
- 7.14 Обратная совместимость
-
8 Возможности GNU Objective-C
- 8.1 API времени выполнения GNU Objective-C
-
8.2
+load: Выполнение кода передmain - 8.3 Кодирование типов
- 8.4 Уборка мусора
- 8.5 Константы строковые объекты
- 8.6
compatibility_alias - 8.7 Исключения
- 8.8 Синхронизация
- 8.9 Быстрое перечисление
- 8.10 Обращение к объектам с помощью среды выполнения 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) 6.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-6.5.0/gcc/index.html