#linux #c #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. Почему не работает через переменную окружения? Хочется разобраться как это работает. Спасибо :)
Ответы
Ответ 1
Переменная окружения $PATH, содержащая пути где исполняемые файлы (скрипты, программы) лежат, не имеет отношения к путям, в которых gcc ищет заголовочные файлы (*.h). Есть директории по умолчанию такие как /usr/include, например, используемые для библиотек, установленных из *-dev системных пакетов. Распространенный способ указать свои пути к заголовочным файлам это использовать -I опцию. Если хочется, можно определить соответствующие переменные окружения (CPATH, etc). Если использовать "func.h", а не, то func.h сперва ищется в директории с текущим файлом (p2.c). Существуют и другие (менее используемые) опции, контролирующие как заголовки ищутся.
Комментариев нет:
Отправить комментарий