Spec-Zone.ru › GCC 4

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 независимы.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.4/gcc/Directory-Options.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API