Являются ли текущая директория по умолчанию статической библиотекой, динамической библиотекой и путями поиска заголовка для gcc? - PullRequest
0 голосов
/ 13 апреля 2019

Введение в GCC имеет пример:

$ gcc -Wall -L. main.c -lhello -o hello 

Опция '-L.'требуется для добавления текущего каталога в путь поиска библиотеки.

Означает ли это, что текущий каталог не является путем поиска по умолчанию для статических файлов библиотеки , поэтому должен бытьдобавлен к пути поиска в библиотеке с помощью -L.?

Подобный вопрос для динамической библиотеки поиска файлов.Является ли текущий каталог файлом поиска по умолчанию для файлов динамической библиотеки, или нам нужно добавить текущий каталог в пути поиска динамической библиотеки с помощью --rpath .?

Аналогичный вопрос для заголовочного файла поиск.Является ли текущий каталог стандартным путем поиска для файлов заголовков, или нам нужно добавить текущий каталог в пути поиска заголовков с помощью -I.?Означает ли следующий пример, что текущий каталог является путем поиска по умолчанию для файлов заголовков, и нам не нужно добавлять текущий каталог в пути поиска заголовков с помощью -I.?

$ ls main.c hello.h
hello.h  main.c

$ cat main.c
#include "hello.h"
int
main (void)
{
  hello ("world");
  return 0;
}

$ gcc -c main.c
$

1 Ответ

1 голос
/ 13 апреля 2019

Текущий рабочий каталог не является частью библиотеки компилятора или путей поиска заголовка.

Однако включения в форме #include "file" (с кавычками) всегда будут искать текущий рабочий каталог, независимо от того, находится он в пути поиска заголовка или нет. Таким образом, -I. необходим только в том случае, если вы включаете файлы в каталог проекта, используя #include <file> (что вам действительно не следует делать, потому что это может запутать любого, кто пытается прочитать ваш код).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...