- •Содержание Назначение и условия применения программы
- •Характеристики программы
- •Обращение к программе Синтаксис командной строки и правила задания опций
- •Управление стадиями обработки и выводом компилятора
- •Опции управления диалектом языка Си
- •Опции вывода и подавления предупреждений
- •Опции отладки
- •Опции оптимизации
- •Опции препроцессора
- •Передача опций ассемблеру
- •Опции каталогов поиска
- •Опции задания целевой машины и версии компилятора
- •Машинно-зависимые опции для целевой платформы
- •Опции генерации кода
- •Переменные окружения, управляющие работой компилятора
- •Перечень опций, не описанных в данной инструкции
- •Сообщения
- •Приложение а. Бинарные утилиты
- •Утилита objcopy Общие сведения
- •Формат командной строки
- •Описание опций
- •Утилита objdump Общие сведения
- •Формат командной строки
- •Описание опций
- •Редактор связейld Общие сведения
- •Описание опций
- •Переменные окружения
- •Ассемблер as Общие сведения
- •Формат командной строки
- •Входные файлы и исходная программа
- •Выходные (объектные) файлы
- •Предупреждения и сообщения об ошибках
- •Общие опции командной строки
- •Специфические опции целевой платформы
- •Лист регистрации изменений
Передача опций ассемблеру
-Wa, опция
Передать текст опцияв качестве опции при вызове ассемблера. Если текстопциясодержит запятые, то он рассматривается как совокупность опций, каждая из которых передается ассемблеру.
Опции каталогов поиска
-Iкаталог (--include-directory каталог)
Добавить каталог к списку каталогов для поиска включаемых файлов. Опция может быть использована для подмены системных заголовочных файлов своими версиями, посколькукаталоги, заданные опцией-I, просматриваются раньше системных каталогов с включаемыми файлами. Если задано несколько опций-I, то соответствующие каталоги просматриваются в порядке слева направо, а затем — стандартные системные каталоги.
-I-(--include-barrier)
Все каталоги, заданные при помощи опций -Iдо-I-, просматриваются только для поиска пользовательских включаемых файлов, заданных директивой вида#include"файл". Препроцессор не ищет в них файлы, заданные директивой вида#include <файл>.
Те каталоги поиска, которые заданы при помощи опции -I после-I-, просматриваются для поиска всех включаемых файлов. Обычно (т.е. если опция‑I‑отсутствует) все каталоги-Iиспользуются именно таким образом.
Еще одно действие опции -I-заключается в том, что отменяется поиск включаемых файлов сначала в текущем каталоге (т.е. в том каталоге, где находится исходный файл), причем не существует способа вполне преодолеть этот эффект. При помощи опции “-I.” задается поиск в том каталоге, откуда был вызван компилятор, что не вполне соответствует способу поиска, применяемому препроцессором по умолчанию; хотя в большинстве случаев это оказывается удовлетворительным выходом из положения.
Подчеркнем, что -I-не отменяет использования стандартных системных каталогов поиска, т. е. опции-I- и-nostdinc независимы.
-Bпрефикс(--prefixпрефикс)
Эта опция указывает, где нужно искать выполняемые файлы, библиотеки и включаемые файлы для работы самого компилятора.
Драйвер компиляции запускает для обработки входных файлов программы cpp (препроцессор), cc1(компилятор),as(ассемблер),ld(Редактор связей). Для поиска каждой из этих программ используется каталогпрефикс, а также каталогпрефикс/машина/версия (см. ниже гл.10 "Опции описания целевой машины и версии компилятора").
Для поиска программ, которые необходимо запустить, драйвер компиляции просматривает следующие каталоги:
Каталог, заданный опцией -B.
Каталог, заданный переменной окружения GCC_EXEC_PREFIX
Список каталогов, заданный переменной окружения COMPILER_PATH
Подкаталог lib/gcc-lib/машина/версияв установочном каталоге.
/usr/lib/gcc,/usr/local/lib/gcc-lib
Список каталогов, заданный переменной окружения PATH.
Опция -Bтакже задает каталог поиска системных включаемых файловпрефикс/include.
Опции задания целевой машины и версии компилятора
В системе могут быть одновременно установлены компиляторы для разных целевых платформ. Для каждой платформы может быть установлено сразу несколько версий компилятора. Для выбора нужного экземпляра компилятора служат опции -bи-V.
-b машина (--target машина)
Аргумент машина задает имя целевой платформы, для которой нужно выполнить компиляцию. Для выполнения СКРВ Багет можно вызватьgccс опцией-b bt23b.
Имя машина должно совпадать с тем, которое было задано (явно или по умолчанию) как имя целевой платформы во время конфигурирования при установке компилятора.
При вызове компилятора по имени bt23b-gccзадавать опцию-bне требуется
-V версия (--use-version версия)
Аргумент версия задает номер версии, которую нужно использовать. Это полезно, если в системе установлено несколько версий компилятора. Пример:-V 2.7.0.
По умолчанию используется последняя из установленных версий.
Опции -bи-V фактически контролируют часть имени каталога, в котором осуществляется поиск выполняемых файлов, отвечающих за стадии обработки исходных файлов (cpp, cc1, as, ld). Файлы СКРВ Багет, относящиеся к целевой платформемашина и версииверсия находятся в каталоге
/CKCPB/local/H-linux86/lib/gcc-lib/машина/версия.
Если компилятор был установлен не в стандартный каталог /CKCPB/local, то они находятся, соответственно, в каталоге
УСТАНОВОЧНЫЙ_КАТАЛОГ/H-linux86/lib/gcc-lib/машина/версия
Лишь в одном отношении опции -b, -V не отвечают за выбор экземпляра компилятора — программа верхнего уровня (драйвер компиляции)gccвызывается всегда одна и та же. Но, поскольку сам драйвер компиляции не производит никакой обработки исходных файлов, а лишь запускает для этого другие программы (cpp, cc1, as, ld), то практически не имеет значения, какая версияgccвыполняется.
Важный аспект, зависящий от того, какой именно драйвер вы используете — это целевая платформа и версия, принятые по умолчанию. Поэтому имеет смысл устанавливать разные экземпляры драйверов компиляции под разными именами. При установке кросс-компиляторов к имени драйвера автоматически добавляется в качестве префикса имя целевой платформы, например bt23b-gcc. Под этим именем можно (без опции-b) запускать кросс-компилятор для платформыbt23b.