Страницы

Поиск по вопросам

вторник, 28 мая 2019 г.

Как корректно указать дополнительный путь для gcc?

Я новичек в этом. Я использую Linux и gcc в bash
Имеется:
p1.c:
int func() { return 1889; } func.h:
#ifndef ONCE #define ONCE int func(); #endif p2.c:
#include #include
int main() { int a = func(); printf("%d",a); return 0; }
func.h я специально переместил в другую папку. В *.bashrc* дописал export PATH="$PATH:/root/deleteme/spec"
# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/root/deleteme/spec

# gcc p?.c
вывод:
p2.c:2:18: fatal error: func.h: No such file or directory #include ^ compilation terminated.
Заработало при указании gcc -I.
Почему не работает через переменную окружения? Хочется разобраться как это работает. Спасибо :)


Ответ

Переменная окружения $PATH, содержащая пути где исполняемые файлы (скрипты, программы) лежат, не имеет отношения к путям, в которых gcc ищет заголовочные файлы (*.h).
Есть директории по умолчанию такие как /usr/include, например, используемые для библиотек, установленных из *-dev системных пакетов.
Распространенный способ указать свои пути к заголовочным файлам это использовать -I опцию. Если хочется, можно определить соответствующие переменные окружения (CPATH, etc). Если использовать "func.h", а не , то func.h сперва ищется в директории с текущим файлом (p2.c). Существуют и другие (менее используемые) опции, контролирующие как заголовки ищутся

Комментариев нет:

Отправить комментарий