Я новичек в этом. Я использую Linux и gcc в bash
Имеется:
p1.c:
int func()
{
return 1889;
}
func.h:
#ifndef ONCE
#define ONCE
int func();
#endif
p2.c:
#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
Заработало при указании gcc -I.
Почему не работает через переменную окружения? Хочется разобраться как это работает. Спасибо :)
Ответ
Переменная окружения $PATH, содержащая пути где исполняемые файлы (скрипты, программы) лежат, не имеет отношения к путям, в которых gcc ищет заголовочные файлы (*.h).
Есть директории по умолчанию такие как /usr/include, например, используемые для библиотек, установленных из *-dev системных пакетов.
Распространенный способ указать свои пути к заголовочным файлам это использовать -I опцию. Если хочется, можно определить соответствующие переменные окружения (CPATH, etc).
Если использовать "func.h", а не
Комментариев нет:
Отправить комментарий