Как мне добавить мой собственный каталог заголовочных файлов в Mac Terminal gcc?

#c #macos #bash #shell #gcc

#c #macos #bash #оболочка #gcc

Вопрос:

Я пытаюсь скомпилировать программу на C (MyProgram.c), которая включает пользовательский файл .h, который находится в указанном каталоге. Как я могу добавить каталог в gcc, чтобы я мог создавать MyProgram.c в любое время, используя только такую команду, как gcc myProgram (без флагов, а что нет)

Ответ №1:

Вы можете сделать это, изменив C_INCLUDE_PATH переменную среды, например

 C_INCLUDE_PATH=~/include
export C_INCLUDE_PATH
  

Вы можете добавить это в свой .bashrc or .bash_profile или любой другой, чтобы переменная среды всегда была установлена правильно. Вот ссылка на то, как вы можете сделать то же самое для библиотек и C .

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

1. Спасибо за комментарий @Rafe Kettler. Я попробовал это (usr / lib) в качестве пути, но я все еще получаю «Нет такого файла или каталога» при компиляции… Куда обычно помещаются мои пользовательские файлы заголовков, чтобы gcc всегда знал о них?

2. @Eric, где бы ты ни захотел, на самом деле. Я вставил свой ~/include , но выбор за вами.

3. @Eric. Если вы использовали «usr / lib», вы можете попробовать «/ usr / lib» вместо этого … но не помещайте файлы заголовков в /usr / lib. Если вы собираетесь это сделать, вы также можете поместить их в /usr /include.

Ответ №2:

пришлось использовать целый набор флагов, чтобы заставить это работать на El Capitan:

 export DYLD_LIBRARY_PATH=/usr/local/include
export CPPFLAGS="-I/usr/local/include/snappy-c.h"
export CFLAGS="-I/usr/local/include/snappy-c.h"
export CXXFLAGS="-I/usr/local/include/snappy-c.h"
export LDFLAGS="-L/usr/local/lib"
  

Ответ №3:

В этой ситуации были бы полезны Makefiles, они облегчают компиляцию нескольких файловых проектов.

Предполагая, что вы используете эти же файлы и они находятся в одном каталоге

  • main.c
  • custom.c
  • custom.h

Пример makefile может выглядеть следующим образом

 all: main.o custom.o
    gcc main.o custom.o -o myExecutable

main.o: main.c
    gcc -c main.c

custom.o: custom.c custom.h
    gcc -c custom.c

clean:
    rm -f *.o myExecutable
  

Или что-то подобное, общий формат

 name: dependency
    command
  

Итак, выполнив make all из командной строки, вы бы дали указание компилятору скомпилировать ваш исходный код в объектные файлы, а затем связать эти объектные файлы вместе в исполняемый файл.

Make должен быть легко доступен в любой современной системе. Для получения дополнительной информации об основных файлах makefile и их использовании обратитесь к этому простому руководству: http://mrbook.org/tutorials/make /