Подтвердить что ты не робот

Скомпилируйте несколько файлов C с помощью make

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

4b9b3361

Ответ 1

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

Ответ 2

Все опубликованные сообщения хороши. Для вашего конкретного случая вы можете попробовать это. По существу все 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.

Ответ 3

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