3.14 Параметры поиска в каталогах
Эти параметры указывают каталоги для поиска файлов заголовков, библиотек и частей компилятора:
-Idir-
Добавить каталог dir в начало списка каталогов, которые нужно искать для файлов заголовков. Это можно использовать для переопределения системного файла заголовков, заменив его своей собственной версией, так как эти каталоги просматриваются до каталогов системных файлов заголовков. Однако не следует использовать этот параметр для добавления каталогов, содержащих системные файлы заголовков, предоставленные поставщиком (используйте -isystem для этого). Если вы используете более одного параметра -I, каталоги сканируются слева направо; стандартные системные каталоги следуют за ними.
Если стандартный системный каталог включения или каталог, указанный с -isystem, также указан с -I, параметр -I игнорируется. Каталог по-прежнему просматривается, но как системный каталог в его нормальном положении в цепочке включения системных файлов. Это делается для того, чтобы не изменить процедуру GCC по исправлению ошибочных системных заголовков и порядок для директивы
include_next. Если вам действительно нужно изменить порядок поиска системных каталогов, используйте параметры -nostdinc и/или -isystem. -iplugindir=dir-
Установить каталог для поиска плагинов, передаваемых с -fplugin=name вместо -fplugin=path/name.so. Этот параметр не предназначен для использования пользователем, а только передается драйвером.
-iquotedir-
Добавить каталог dir в начало списка каталогов, которые нужно искать для файлов заголовков только в случае
#include "file"; они не ищутся для#include <file>, иначе так же, как и -I. -Ldir-
Добавить каталог dir в список каталогов для поиска -l.
-Bprefix-
Этот параметр указывает, где найти исполняемые файлы, библиотеки, файлы заголовков и данные самого компилятора.
Программа-драйвер компилятора выполняет одну или несколько подпрограмм
cpp,cc1,asиld. Она пытается использовать prefix в качестве префикса для каждой программы, которую она пытается запустить, как с использованием, так и без ‘machine/version/’ (см. Параметры целевой платформы).Для каждой подпрограммы, которая должна быть запущена, программа-драйвер компилятора сначала пытается использовать префикс -B, если он есть. Если это имя не найдено или -B не указан, драйвер пытается использовать два стандартных префикса, /usr/lib/gcc/ и /usr/local/lib/gcc/. Если ни один из них не приводит к имени файла, которое найдено, имя программы без модификаций ищется с помощью каталогов, указанных в вашей переменной среды
PATH.Компилятор проверяет, ссылается ли путь, предоставленный с -B, на каталог, и при необходимости добавляет разделитель каталога в конец пути.
Префиксы -B, которые фактически указывают имена каталогов, также применяются к библиотекам в компоновщике, так как компилятор преобразует эти параметры в параметры -L для компоновщика. Они также применяются к файлам заголовков в препроцессоре, так как компилятор преобразует эти параметры в параметры -isystem для препроцессора. В этом случае компилятор добавляет ‘include’ к префиксу.
Файл поддержки выполнения libgcc.a также можно найти с помощью префикса -B, если это необходимо. Если он не найден там, пробуются два стандартных префикса выше, и больше ничего. Файл исключается из компоновки, если он не найден.
Другой способ указать префикс, похожий на префикс -B, — использовать переменную среды
GCC_EXEC_PREFIX. См. Переменные среды.В качестве специального хэка, если путь, предоставленный с -B, равен [dir/]stageN/, где N — число от 0 до 9, то он заменяется на [dir/]include. Это помогает в загрузке компилятора.
-specs=file-
Обработать file после того, как компилятор прочитает стандартный файл specs, чтобы переопределить значения по умолчанию, которые использует программа-драйвер компилятора
gcc, при определении параметров, которые следует передатьcc1,cc1plus,as,ld, и т. д. Более одного -specs=file можно указать в командной строке, и они обрабатываются в порядке следования слева направо. --sysroot=dir-
Использовать dir в качестве логического корневого каталога для заголовков и библиотек. Например, если компилятор обычно ищет заголовки в /usr/include и библиотеки в /usr/lib, он вместо этого ищет dir/usr/include и dir/usr/lib.
Если вы используете этот параметр и параметр -isysroot, то параметр --sysroot применяется к библиотекам, а параметр -isysroot — к файлам заголовков.
GNU компоновщик (начиная с версии 2.16) имеет необходимую поддержку этого параметра. Если ваш компоновщик не поддерживает этот параметр, аспект файла заголовков --sysroot все еще работает, но аспект библиотеки — нет.
--no-sysroot-suffix-
Для некоторых целей, суффикс добавляется к корневому каталогу, указанному с --sysroot, в зависимости от используемых других параметров, так что заголовки могут, например, находиться в dir/suffix/usr/include вместо dir/usr/include. Этот параметр отключает добавление такого суффикса.
-I--
Этот параметр устарел. Пожалуйста, используйте -iquote вместо -I каталогов перед -I- и удалите параметр -I-. Любые каталоги, которые вы указываете с параметрами -I перед параметром -I-, просматриваются только для случая
#include "file"; они не просматриваются для#include <file>.Если дополнительные каталоги указываются с параметрами -I после параметра -I-, эти каталоги просматриваются для всех
#includeдиректив. (Обычно все каталоги -I используются таким образом.)Кроме того, параметр -I- препятствует использованию текущего каталога (откуда происходит текущий входной файл) в качестве первого каталога поиска для
#include "file". Нет способа переопределить это действие -I-. С помощью -I. вы можете указать поиск в каталоге, который является текущим при вызове компилятора. Это не совсем то же самое, что делает препроцессор по умолчанию, но это часто приемлемо.-I- не препятствует использованию стандартных системных каталогов для файлов заголовков. Таким образом, -I- и -nostdinc независимы.
Далее: Файлы спецификаций, Предыдущее: Параметры компоновки, Вверх: Вызов GCC [Содержание][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-5.5.0/gcc/Directory-Options.html