Составители:
Рубрика:
28
предотвращения таких ситуаций утилита make поддерживает встроенную переменную .PHONY,
которой можно присвоить список имен целей, которые всегда должны считаться фальшивыми.
Примерами фальшивых целей можно назвать: all, clean и install. Цель all обычно используется как
псевдоним для сборки сложного проекта, содержащего несколько результирующих файлов
(исполняемых, разделяемых библиотек, страниц документации и т.п.). Цель clean используется для
полной очистки каталога проекта от результатов компиляции и мусора, например, резервных файлов,
создаваемых текстовыми редакторами. Цель install используется для инсталляции проекта в
операционной системе.
4.2.3. Описание GNU Compiler Collection
GCC — это компилятор проекта GNU, первый вариант которого был реализован Ричардом
Столлманом в 1985 году. На данный момент GCC поддерживает следующие языки
программирования: Ada, C, Objective-C, C++, Fortran, Java. Также он является абсолютным лидером
по количеству поддерживаемых процессоров и операционных систем.
Внешний интерфейс GCC является стандартом для компиляторов в Unix-системах. Пользователь
вызывает управляющую программу gcc. Команда gcc интерпретирует аргументы командной строки,
определяет и выполняет для каждого входного файла свои компиляторы нужного языка, запускает,
если необходимо, ассемблер и компоновщик.
Работа компилятора gcc состоит из трех этапов: обработка препроцессором, компиляция и
компоновка (или линковка).
Препроцессор включает в основной файл содержимое всех заголовочных файлов, указанных в
директивах #include. В заголовочных файлах обычно находятся объявления функций, используемых в
программе, но не определённых в тексте программы. Их определения находятся где-то в другом
месте: или в других файлах с исходным кодом или в бинарных библиотеках.
Вторая стадия – компиляция. Она заключается в превращении текста программы на исходном
языке в набор машинных команд. Результат сохраняется в объектном файле.
Последняя стадия – компоновка. Она заключается в связывании всех объектных файлов проекта в
один, связывании вызовов функций с их определениями, и присоединением библиотечных файлов,
содержащих функции, которые вызываются, но не определены в проекте. В результате формируется
запускаемый файл.
Все опции командной строки можно разделить на три категории:
1. Специфичные к языку. Компилятор GCC разработан для компиляции нескольких языков и
некоторые опции применяются только к одному или двум из них.
2. Специфичные к платформе. Как уже упоминалось выше, компилятор GCC является абсолютным
лидером по количеству поддерживаемых платформ. Поэтому некоторые опции применяются только
когда создается объектный код для конкретной целевой платформы. К примеру, если целевой
платформой выбрана Intel 386, для того чтобы определить, что числа с плавающей точкой,
возвращаемые вызываемыми функциями, должны сохраняться в аппаратных регистрах с плавающей
точкой может быть использован набор опций -fp -ret -in -387.
3. Общие. Многие опции имеют общее значение для всех языков программирования и аппаратных
платформ. Например, опция -о указывает компилятору оптимизировать выводимый объектный код.
Команда-драйвер gcc обрабатывает все известные ей опции, а оставшиеся передает процессу,
компилирующему конкретный язык. Если опция компилируемого языка не известна ему, то будет
выдано сообщение об ошибке.
Компилятор gcc развивается весьма динамично. Каждые несколько минут в экспериментальную
версию проекта вносятся разнообразные изменения: исправляются найденные ошибки, добавляется
новая функциональность. Домашняя страничка компилятора находится по адресу
www.gnu.org/software/gcc/gcc.html
. На ней можно отслеживать текущую версию продукта и следить за
сделанными изменениями.
Страницы
- « первая
- ‹ предыдущая
- …
- 26
- 27
- 28
- 29
- 30
- …
- следующая ›
- последняя »