Я не понимаю, что входит в make-файл, а что в заголовочный файл.
Насколько я понимаю, make-файл имеет формат:
target: dependencies
instructions
Но у меня это не сработало. Вот что я сделал:
library: login.o linked.o cipher.o
gcc -o library login.o linked.o cipher.o
login.o: login.c linked.h
gcc -c login.c
linked.o: linked.c cipher.h
gcc -c linked.c
cipher.o: cipher.c
gcc -c cipher.c
Когда я набираю «make makefile» в командной строке, компилятор говорит «make: ничего не нужно делать для makefile». Полагаю, я ошибся в формате. Кроме того, для чего нужна библиотечная часть? Я просто откуда-то скопировал. Есть ли в каждом make-файле?
Кроме того, есть ли расширение для make-файлов (makefile.txt, makefile.c)?
И должны ли файлы makefile называться makefile? Могу я назвать его taliasmakefile, makefile69 или lykeim2freespirited4skool или iwanaBahippie?
Что касается файлов заголовков, я не могу найти четких примеров того, что именно в них входит. Вы включаете переменные, к которым хотите иметь доступ для других файлов? Или прототипы функций?
Я действительно новичок в C. Может ли кто-нибудь объяснить мне это, как будто мне 5?
3 ответа
Когда вы запустите make
, он будет искать файл с именем Makefile
; вам не нужно указывать make-файл для использования. Без аргументов make
(обычно) создает первую цель в файле. Make-файлы не нуждаются в расширении и могут иметь другие имена (но тогда вы должны указать make
, где искать).
Заголовочные файлы предназначены для прототипов функций, типов и (глобальных) переменных, к которым вам нужен доступ из кода, который вы вставляете в файлы .c
(плюс некоторые другие вещи, такие как препроцессоры #define
, которые пригодятся).
Есть два этапа создания программного обеспечения C ... компиляция и компоновка.
Компиляция превращает файлы .C в объектные файлы.
Связывание берет все эти объектные файлы и объединяет их в библиотеку или исполняемый файл.
Заголовочные файлы используются во время компиляции ... в них есть информация о том, что вы должны найти во время компоновки. т. е. должна быть функция с именем X, должна быть переменная с именем Y и т. д. или она определяет вещи так, чтобы они были общими для нескольких файлов C. например MAX_WIDGETS. т.е. это способ для одного файла .c использовать что-то, что реализовано в другом файле .c, или определить вещи, общие для файлов .c.
Make-файлы - это все о том, как взять .h .c и запустить их через компиляцию, а затем связывание и любые другие преобразования, которые вы хотите сделать с этими файлами.
С make-файлом все в порядке, но нет цели под названием «makefile». Используйте опцию -f для выбора файла: make -f makefile
. Но вам это не нужно, так как ваш файл имеет одно из стандартных имен (Makefile, makefile, ...).
Похожие вопросы
Новые вопросы
c
C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.