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