Spec-Zone.ru › GCC 4 CPP

2.3 Путь поиска

GCC ищет заголовочные файлы в нескольких разных местах. В обычной системе Unix, если вы не укажете иное, он будет искать заголовочные файлы, запрошенные с помощью #include <file> в:

/usr/local/include
libdir/gcc/target/version/include
/usr/target/include
/usr/include

Для программ на C++, он также будет искать в libdir/../include/c++/version в первую очередь. В приведенном выше примере, target — это каноническое имя системы, для которой GCC был сконфигурирован для компиляции кода; часто, но не всегда, совпадает с каноническим именем системы, на которой он работает. version — это версия используемого GCC.

Вы можете добавить в этот список параметр командной строки -Idir. Все каталоги, указанные -I , просматриваются слева направо, до стандартных каталогов. Единственное исключение — когда dir уже включено в стандартном поиске. В этом случае параметр игнорируется, а порядок поиска системных каталогов остается неизменным.

Дублирующиеся каталоги удаляются из списков поиска в кавычках и квадратных скобках перед объединением этих двух списков в окончательный список поиска. Таким образом, каталог может появиться дважды в итоговом списке поиска, если он был указан как в кавычках, так и в квадратных скобках.

Вы можете запретить GCC искать в любых стандартных каталогах с помощью параметра -nostdinc. Это полезно при компиляции ядра операционной системы или какой-либо другой программы, которая не использует стандартные средства библиотеки C, или самой стандартной библиотеки C. -I параметры не игнорируются, как описано выше, когда -nostdinc включен.

GCC ищет заголовочные файлы, запрошенные с помощью #include "file" сначала в каталоге, содержащем текущий файл, затем в каталогах, указанных параметрами -iquote, а затем в тех же местах, где он искал бы заголовочный файл, запрошенный с использованием угловых скобок. Например, если /usr/include/sys/stat.h содержит #include "types.h", GCC сначала ищет types.h в /usr/include/sys, а затем в стандартном пути поиска.

‘#line’ (см. Управление строками) не меняет представление GCC о каталоге, содержащем текущий файл.

Вы можете поместить -I- в любой точке своего списка -I параметров. Это имеет два эффекта. Во-первых, каталоги, появляющиеся перед -I- в списке, ищутся только для заголовочных файлов, запрошенных в кавычках. Каталоги после -I- ищутся для всех заголовочных файлов. Во-вторых, каталог, содержащий текущий файл, не просматривается, если только он не является одним из каталогов, указанных параметром -I . -I- устарел, -iquote следует использовать вместо него.

-I. -I- не эквивалентно отсутствию -I параметров вообще и не приводит к такому же поведению для включений '<>', что и включения '""' без специальных параметров. -I. ищет заголовочные файлы в текущем рабочем каталоге компилятора. Это может или не может совпадать с каталогом, содержащим текущий файл.

Если вам нужно искать заголовочные файлы в каталоге с именем -, напишите -I./-.

Существует еще несколько способов настройки пути поиска заголовочных файлов. Они обычно менее полезны. Смотрите Вызов.

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

Spec-Zone.ru

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