Я не понимаю, что входит в 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?

0
tparf 12 Мар 2012 в 03:19

3 ответа

Лучший ответ

Когда вы запустите make, он будет искать файл с именем Makefile; вам не нужно указывать make-файл для использования. Без аргументов make (обычно) создает первую цель в файле. Make-файлы не нуждаются в расширении и могут иметь другие имена (но тогда вы должны указать make, где искать).

Заголовочные файлы предназначены для прототипов функций, типов и (глобальных) переменных, к которым вам нужен доступ из кода, который вы вставляете в файлы .c (плюс некоторые другие вещи, такие как препроцессоры #define, которые пригодятся).

4
James Aylett 11 Мар 2012 в 23:24

Есть два этапа создания программного обеспечения C ... компиляция и компоновка.

Компиляция превращает файлы .C в объектные файлы.

Связывание берет все эти объектные файлы и объединяет их в библиотеку или исполняемый файл.

Заголовочные файлы используются во время компиляции ... в них есть информация о том, что вы должны найти во время компоновки. т. е. должна быть функция с именем X, должна быть переменная с именем Y и т. д. или она определяет вещи так, чтобы они были общими для нескольких файлов C. например MAX_WIDGETS. т.е. это способ для одного файла .c использовать что-то, что реализовано в другом файле .c, или определить вещи, общие для файлов .c.

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

1
Keith Nicholas 12 Мар 2012 в 00:02

С make-файлом все в порядке, но нет цели под названием «makefile». Используйте опцию -f для выбора файла: make -f makefile. Но вам это не нужно, так как ваш файл имеет одно из стандартных имен (Makefile, makefile, ...).

0
potrzebie 12 Мар 2012 в 18:32