Страницы

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

воскресенье, 8 марта 2020 г.

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

#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). Существуют и другие (менее используемые) опции, контролирующие как заголовки ищутся.

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

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