3.15 Параметры поиска в каталогах
Эти параметры задают каталоги для поиска заголовочных файлов, библиотек и частей компилятора:
-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. Это помогает при загрузке компилятора.
-no-canonical-prefixes-
Не расширять символьные ссылки, не разрешать ссылки на ‘/../’ или ‘/./’, и не делать путь абсолютным при генерации относительного префикса.
--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-6.5.0/gcc/Directory-Options.html