Скомпилируйте несколько файлов C с помощью make - PullRequest
27 голосов
/ 09 апреля 2010

(у меня Linux Ubuntu 9.10, поэтому расширение для исполняемого файла - executetablefile.out). Я только начинаю заниматься модульным программированием (программированием с несколькими файлами) на C и хочу знать, как скомпилировать несколько файлов в одном Makefile. Например, что было бы make-файлом для компиляции этих файлов: main.c, dbAdapter.c, dbAdapter.h? (Кстати, если вы еще не разобрались, основная функция находится в main.c) Также кто-то может опубликовать ссылку на документацию make-файла?

Ответы [ 3 ]

39 голосов
/ 09 апреля 2010

Все опубликованные ссылки хороши. Для вашего конкретного случая вы можете попробовать это. По сути, все Make-файлы следуют этому шаблону. Все остальное - ярлыки и макросы.

program: main.o dbAdapter.o
   gcc -o program main.o dbAdapter.o

main.o: main.c dbAdapter.h
   gcc -c main.c

dbAdapter.o dbAdapter.c dbAdapter.h
   gcc -c dbAdapter.c

Ключевым моментом здесь является то, что Makefile последовательно просматривает правила и создает по мере необходимости определенные элементы.

Сначала он посмотрит на программу и увидит, что для сборки программы требуется нечто, называемое main.o и dbAdapter.o.

Затем он найдет main.o. Однако для сборки main.o ему понадобятся main.c и dbAdapter.h (я предполагаю, что dbAdapter.h включен в main.c).

Он будет использовать эти источники для сборки main.o путем его компиляции с использованием gcc. -C указывает на то, что мы только хотим скомпилировать.

То же самое происходит с dbAdapter.o. Когда у него есть эти два объектных файла, он готов связать их. Для этого шага также используется компилятор gcc. -O указывает, что мы создаем файл с именем program.

24 голосов
/ 09 апреля 2010

См. Мое Учебное пособие по Makefile: Как написать Makefile . Он предоставляет хорошо продуманный Makefile, который создаст такой проект (с несколькими исходными файлами C и C ++), объясняет, как он работает, и предупреждает о распространенных ошибках, а также о плохих практиках makefile, которые слишком часто встречаются в дикой природе. .

0 голосов
/ 09 апреля 2010

GNU make должно быть тем, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...